随机为您推荐的文章:Android简单模仿AsyncHttpClient
使用方法AsyncHttpClientahc=newAsyncHttpClient();ahc.get(mPath,mhandler);privateHandlermHandler=newHandler(){publicvoidhandleMessage(Messag
1.attrs.xml
/android/frameworks/base/core/res/res/values/attrs.xml
attrs.xml文件为View/ViewGroup定义了所有可用的属性。它的根元素是resources…,它包含了俩个子元素:
a.attr子元素:定义的属性。
b.declare-styleable子元素:定义一个styleable对象,每个styleable对象都是一组attr属性的集合。
在这里我们主要看一下Preference组件定义的属性:
由图中可以看出,定义了一个Preference的styleable对象,它里面包含了如layout、icon等属性。
2.styles.xml
/android/frameworks/base/core/res/res/values/styles.xml
由代码可以看出,Preference的Style只定义了layout的属性。那么在Preference控件中,又是如何把这个layout加载的。下面看一下Preference.java源码。
其中Preference.CheckBoxPreference样式是通过圆点“.”继承自Preference样式,并覆写了其中的属性“widgetLayout”。
3.Preference.java
/android/frameworks/base/core/java/android/preference/Preference.java
Preference.java中有三个构造方法,最后调用的都是第一个构造方法:
Preference(Contextcontext,AttributeSetattrs,intdefStyle)
其中最关键的一句代码是:
ternal.R.styleable.Preference,defStyle,0);
a.第一个参数:AttributeSet对象,它包含了在attrs.xml文件中定义的所有属性。
b.第二个参数:int[]对象(com.android.internal.R.styleable.Preference),它是我们在attrs.xml文件中定义的Preference属性,即
c.第三个参数:int对象(com.android.internal.R.attr.preferenceStyle),它是我们在styles.xml文件中定义的Preference属性默认,即
也就是说,我们将Preference的属性和默认都放到TypedArray类中,然后通过switch语句将它们提取出来,并利用这些初始化相关属性,如mLayoutResId。
4.CheckBoxPreference.java
最后,我们来看一下继承自Preference的CheckBoxPreference.java。
b.在styles.xml文件中设置了属性attrname=”widgetlayout”的默认。(其实就是在CheckBoxPreference最右边添加了一个checkBox)
以上就是利用attrs.xml和styles.xml定义Preference的全文介绍,希望对您学习Android应用开发有所帮助.
3AndroidStudio导入项目出现安装Error:Cause:failedtofindtargetwithhashstringandroid-23等错误
2009-2020织梦者.
推荐: