项目需要修改4.0的settings,先写点界面修改部分的实现吧
一、上面的分页tab
android3.0以后就加入了ActionBar,上面的那条是一个ActionBar,不熟悉的可以先去看看ActionBar的介绍
在Settings.java的onCreate()方法中添加,代码如下:
[java]
ActionBar ab = getActionBar();
ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ab.setDisplayOptions(3);
Tab tab1 = ab.newTab();
tab1.setTabListener(new MyTabListener());
tab1.setText(R.string.settings_tab_individuation);
ActionBar ab = getActionBar();
ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ab.setDisplayOptions(3);
Tab tab1 = ab.newTab();
tab1.setTabListener(new MyTabListener());
tab1.setText(R.string.settings_tab_individuation);
二、左侧Header背景及list item的背景更换
1、list item的背景在Settings.java的内部类HeaderAdapter的getView()方法中进行设定,准备好自己的selector,参考代码如下:
[java]
if (holder.title.getText().equals(getContext().getResources().getString(R.string.header_category_wireless_networks))) {
view.setBackgroundResource(R.drawable.selector_list_item_top);
} else {
view.setBackgroundResource(R.drawable.selector_list_item_mid);
}
return view;
if (holder.title.getText().equals(getContext().getResources().getString(R.string.header_category_wireless_networks))) {
view.setBackgroundResource(R.drawable.selector_list_item_top);
} else {
view.setBackgroundResource(R.drawable.selector_list_item_mid);
}
return view;2、背景的更换(即上图中左侧list下面的红色背景)
通过查看PreferenceActivity的源码,再查看对应的布局文件,找到list后面的layout的对应的id,在Settings.java的onCreate()方法中进行背景的更换就可以了
参考代码如下:
[java]
View v1 = findViewById(com.android.internal.R.id.prefs);
v1.setBackgroundColor(Color.RED);
View v1 = findViewById(com.android.internal.R.id.prefs);
v1.setBackgroundColor(Color.RED);3、左侧蓝色背景的更换
方法和左侧的背景更换一样,查看源码,找到对应的布局id,在Settings.java的onCreate()方法中进行背景的更换就可以了,参考代码如下:
[java]
View v = findViewById(com.android.internal.R.id.prefs_frame);
v.setBackgroundColor(Color.BLUE);
View v = findViewById(com.android.internal.R.id.prefs_frame);
v.setBackgroundColor(Color.BLUE);4、添加一点,右则的settings item的背景更换,右侧的item就是PreferenceScreen里面对应的Preference,看代码:
[html]
<CheckBoxPreference
android:defaultValue="true"
android:key="set_01"
android:layout="@layout/pref_list_item_top"
android:summaryOff="当前状态:关闭"
android:summaryOn="当前状态:开启"
android:title="提示-01"
android:widgetLayout="@layout/pref_widget_checkbox" />
<Preference
android:key="set_02"
android:layout="@layout/pref_list_item_mid"
android:summary="点击修改"
android:title="设置-02"
android:widgetLayout="@layout/pref_widget_more" />
<CheckBoxPreference
android:defaultValue="true"
android:key="set_01"
android:layout="@layout/pref_list_item_top"
android:summaryOff="当前状态:关闭"
android:summaryOn="当前状态:开启"
android:title="提示-01"
android:widgetLayout="@layout/pref_widget_checkbox" />
<Preference
android:key="set_02"
android:layout="@layout/pref_list_item_mid"
android:summary="点击修改"
android:title="设置-02"
android:widgetLayout="@layout/pref_widget_more" />
preference是可以指定layout和widgetLayout的,注意layout代码中控件的id,一定不可以错,要用系统的,layout代码如下:
[html]
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/selector_list_item_bot"
android:gravity="center_vertical"
android:minHeight="?android:listP
补充:移动开发 , Android ,