android 自定义preference的属性

来源:互联网 发布:知乎有趣的自拍软件 编辑:程序博客网 时间:2024/05/21 08:58

最近碰到了个问题,我想调整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>

其余属性都可以任意调整布局。


原创粉丝点击