最近碰到了个问题,我想调整checkboxpreference中的图片的大小以及位置,学习了下发出来:
1. 拷贝并重命名framework/base/core/res/res/layout/preference.xml到你的工程目录res/layout/,如mypreference.xml
2. 修改mypreference中你想修改对应的属性,不赘述,大家都会。
3. 如果是用静态加载preference的,在preference的xml里加入属性 android:layout="@layout/mypreference"
如果是代码中动态加载的,new了preference的对象后,setLayoutResource(R.layout.mypreference)即可。
顺带说下动态和静态加载preference。
1. 静态加载很简单,在preferenceActivity中addPreferencesFromResource(r.xml.xxxx);即可
然后各种findpreference(key)即可。
2. 动态加载 : 需要首先创建一个preferenceScreen对象,然后通过这个对象来addpreference。
步骤如下:
PreferenceScreen prefscreen;
prefscreen = this.getPreferenceManager().createPreferenceScreen(
getApplicationContext());
this.setPreferenceScreen(prefscreen);
想要添加某个preference到这个screen的时候,(以checkbox为例)只需要new CheckBoxPreference();
设置title,设置summary,然后prefscreen.addPreference(checkboxpreference);
可以参考蓝牙设置的扫描结果的写法,比较经典。
最后再说下注意点:
PreferenceActivity中增加PreferenceScreen的时候都是增加到了此Activity的ListView中,也就是说,在Activity的layout中必须有如下成员:
特别注意Id,不能变
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
></ListView>
其余属性都可以任意调整布局。