当前位置:操作系统 > 安卓/Android >>

android4.0 Settings 界面修改

 项目需要修改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 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,