利用attrsxml和 stylesxml定义Preference

※发布时间:2016-7-21 14:25:41   ※发布作者:小编   ※出自何处: 

  随机为您推荐的文章: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织梦者.

推荐:

相关阅读
  • 没有资料