在这里我们主要看一下
Preference
组件的默认值:
由代码可以看出,
Preference
的
Style
只定义了
layout
的属性值。那么在
Preference
控件中
,又是如何把这个
layout
加载的。下面看一下
Preference.java
源码。
@H_403_8@3.Preference.java
/android/frameworks/base/core/java/android/preference/Preference.java
Preference(Context context,AttributeSet attrs,int defStyle)
其中最关键的一句代码是:
TypedArray a = context.obtainStyledAttributes(attrs,
com.android.internal.R.styleable.Preference,defStyle,0);
@H_403_8@b.@H_403_8@第二个参数:int[]对象(com.android.internal.R.styleable.Preference),它是我们在attrs.xml文件中定义的 Preference属性,即
系统会把Preference styleable编译为一个int[]数组,里面存放的是 Preference每一个attr的ID值。
@H_403_8@c.@H_403_8@第三个参数:int对象(com.android.internal.R.attr.preferenceStyle),它是我们在styles.xml文件中定义的 Preference属性默认值,即
这样子,我们就把preference.xml作为Preference属性<attr name=”layout”的默认值。
@H_403_8@4.CheckBoxPreference.java
最后,我们来看一下继承自Preference的CheckBoxPreference.java。
相比于Preference: