首先,Preference相关的东西都是以list的形式展现给大家的,所以,修改的样式一般可以分为2类:1.listitem背景修改。2.listitem具体view修改。我们分别对下面四种情况进行分析。
1.activity继承自PreferenceActivity
1).可以通过getListView()来获取listview对象,然后设置listview的相关属性。如4.0.3的设置应用,首界面是通过加载loadHeadersFromResource(R.xml.settings_headers, headers);
2).一般如果自己写对应adapter的话,listitem的具体view信息就可以具体进行操作了,位置在adapter的getview函数中。
2.PreferenceFragment
对于这种形式的很难进行修改,首先找出其加载的layout文件,一般layout文件中存在具体的配置信息,如PreferenceScreen等,然后可以具体的进行修改。在这个中间是获取不到getListView()方法的。
复写onActivityCreated()方法,在里边可以获得getListView()对象。
3.PreferenceScreen
在节点中配置stle属性,来进行item的具体控制,如style="@style/Preference_Holo"
<style name="Preference_Holo">
<item name="android:layout">@layout/preference_holo</item>
</style>
此处需要注意@layout/preference_holo的具体配置,最好和系统的保持一致(具体view的id等信息)
4.PreferenceCategory
它的修改需要复写PreferenceCategory类,一般采用继承的方法,然后在onBindView中修改标题的样式,如:
public class SPreferenceCategory extends PreferenceCategory {
public SPreferenceCategory(Context context) {
super(context);
}
public SPreferenceCategory(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SPreferenceCategory(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onBindView(View view) {
super.onBindView(view);
view.setBackgroundResource(R.drawable.list_title_bg_normal);
if (view instanceof TextView) {
TextView tv = (TextView) view;
// tv.setTextSize(16);
tv.setTextColor(Color.BLACK);
}
}
}
总结:1.最好的控制方法是自定义控件,这样就可以随意的控制样式,得到自己需要的。2.首先找到xml文件,然后根据xml文件的内容,再进行修改,如果很难修改,就继续往framework层延伸,找到相关的内容,然后移植到自己的应用。3.PreferenceCategory主要负责标题的样式。其里边的子项就是listitem。最好的学习方式是尝试修改系统的setting应用,里面包含的preference-headers,header等很有意思。
分享到:
相关推荐
android Preference自定义样式
Android Preference Framework源码~~~~~~~~~~~~~~~~~
上篇博文代码实现了Android自带的preference组件,本文将通过实例讲解自定义preference组件。 主要通过以下几步来实现: 1.定义需要的layout布局res->layout->xml文件; 2.通过继承Preference类,来实现自定义...
Preference组件是android的SharePreferences的衍生品,Preference组件的状态值是默认永久的保存在/data/data/包名/shared_prefs 目录下,因为Android系统的Setting应用及一些符合Android设计思想的应用的设置界面...
Android中preference的使用,使用详解.
Android中Preference的使用以及监听事件分析
Android提供preference这个键值对的方式来处理这种情况,自动保存这些数据,并立时生效,同时Android提供一种类似的layout的方式来进行Preference的布局。 Preference组件有ListPreference,EditTextPreference,...
此DEMO内含基本的android preference framework的简单介绍,包括CheckboxPreference, RingtonePreference, EditTextPreference以及ListPreference。主要探究了一下android 怎么通过使用preference从而达到对用户定制...
安卓Android源码——Preference_Demo.rar
android程序的一个demo,演示Preference保存设置的功能
NULL 博文链接:https://sunney2012.iteye.com/blog/1158214
Android preference activity sample.
android-support-v7-preference.jar
这是Pro Android学习系列中preference部分的例子源代码。
自定义preference的checkboxpreference样式
android各种Preference的使用
Based on support-preference from Android Support Library, adding a lot of exciting features. Sample How to use add dependencies // replace with version above implementation 'moe.shizuku.preference...
Android程序 Preference应用 注册案例
Android应用源码之Preference_Demo.zip项目安卓应用源码下载Android应用源码之Preference_Demo.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
声明简单,但是如何从PreferenceScreen或者PreferenceCategory中删除一个Preference会简单么.为什么有些人写的就无法删除成功呢?本文将从Android源码实现来分析一下. 声明文件 代码如下: <?xml version=”1.0″ ...