您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页android4.0 Settings 界面修改

android4.0 Settings 界面修改

来源:化拓教育网
android4.0 Settings 界面修改 项目需要修改4.0的settings,先写点界面修改部分的实现吧n n n n n n n n n 一、上面的分页tab n android3.0以后就加入了ActionBar,上面的那条是一个ActionBar,不熟悉的可以先去看看ActionBar的介绍n 在Settings.java的onCreate()方法中添加,代码如下: n n [java]n ActionBar ab = getActionBar(); n n n n n ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); n n n n n ab.setDisplayOptions(3); n n n n n Tab tab1 = ab.newTab(); n n n n n tab1.setTabListener(new MyTabListener()); n n n n n tab1.setText(R.string.settings_tab_individuation); n n ActionBar ab = getActionBar(); n n n n ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); n n n n ab.setDisplayOptions(3); n n n n Tab tab1 = ab.newTab(); n n n n tab1.setTabListener(new MyTabListener()); n n n n tab1.setText(R.string.settings_tab_individuation); 二、左侧Header背景及list item的背景更换n 1、list item的背景在Settings.java的内部类HeaderAdapter的getView()方法中进行设定,准备好自己的selector,参考代码如下: n n n n n [java]n if (holder.title.getText().equals(getContext().getResources().getString(R.string.header_category_wireless_networks))) { n n n n n n n n n view.setBackgroundResource(R.drawable.selector_list_item_top); n n n n n n n } else { n n n n n n n n n view.setBackgroundResource(R.drawable.selector_list_item_mid); n n n n n n n } n n n n n n n nn n n n n n n return view; n n if (holder.title.getText().equals(getContext().getResources().getString(R.string.header_category_wireless_networks))) { n n n n n n view.setBackgroundResource(R.drawable.selector_list_item_top); n n n n n n } else { n n n n n n view.setBackgroundResource(R.drawable.selector_list_item_mid); n n n n n n } n n n n n nn n n n n n n return view;2、背景的更换(即上图中左侧list下面的红色背景) n 通过查看PreferenceActivity的源码,再查看对应的布局文件,找到list后面的layout的对应的id,在Settings.java的onCreate()方法中进行背景的更换就可以了 n 参考代码如下: n n [java]n View v1 = findViewById(com.android.internal.R.id.prefs); n n n n n v1.setBackgroundColor(Color.RED); n n View v1 = findViewById(com.android.internal.R.id.prefs); n n n n v1.setBackgroundColor(Color.RED);3、左侧蓝色背景的更换n 方法和左侧的背景更换一样,查看源码,找到对应的布局id,在Settings.java的onCreate()方法中进行背景的更换就可以了,参考代码如下: n n [java] View v = findViewById(com.android.internal.R.id.prefs_frame); n n n n n v.setBackgroundColor(Color.BLUE); n n View v = findViewById(com.android.internal.R.id.prefs_frame); n n n n v.setBackgroundColor(Color.BLUE);4、添加一点,右则的settings item的背景更换,右侧的item就是PreferenceScreen里面对应的Preference,看代码: n n [html]n n nn n n n n n n n n n n n preference是可以指定layout和widgetLayout的,注意layout代码中控件的id,一定不可以错,要用系统的,layout代码如下: n n n n n [html]n n n nn n n n nn n n n n n nn n n n n n n n n nn n n n nn n n n n n n n n n n n n n n n n n n n n n widgetlayout的代码如下: n n [html]n n n n 上面这个是CheckBox的widgetlayout n 如果是普通的preference可以没有,也可以放一个imageView什么的(例如一个向右的箭头)起到指示作用。。效果如下: n n n n n n n 三、点击对应tab里,左侧header list的刷新 n 申明一个标志位 n 在tab的点击事件里面对标记位进行置位,如下: n n [java]n private class MyTabListener implements ActionBar.TabListener { n nn n n n public void onTabSelected(Tab tab, FragmentTransaction ft) { n n n n n n if (tab.getText().equals(getResources().getString(R.string.settings_tab_personal_info))) { n n n n n n n n flag = FLAG_TAB_PERSONAL_INFO; n n n n n n } else if (tab.getText().equals(getResources().getString(R.string.settings_tab_system))) { n n n n n n n n flag = FLAG_TAB_SYSTEM; n n n n n n } else if (tab.getText().equals(getResources().getString(R.string.settings_tab_individuation))) { n n n n n n n n flag = FLAG_TAB_INDIVIDUATION; n n n n n n } n n n n n n nn n n n n n invalidateHeaders(); n n n n } n nn n n n public void onTabUnselected(Tab tab, FragmentTransaction ft) { n n n n n n nn n n n } n nn n n n public void onTabReselected(Tab tab, FragmentTransaction ft) { n n n n } n nn n } n n private class MyTabListener implements ActionBar.TabListener { n n n n public void onTabSelected(Tab tab, FragmentTransaction ft) { n n nif (tab.getText().equals(getResources().getString(R.string.settings_tab_personal_info))) { n n nflag = FLAG_TAB_PERSONAL_INFO; n n n} else if (tab.getText().equals(getResources().getString(R.string.settings_tab_system))) { n n nflag = FLAG_TAB_SYSTEM; n n n} else if (tab.getText().equals(getResources().getString(R.string.settings_tab_individuation))) { n n nflag = FLAG_TAB_INDIVIDUATION; n n n} n n n n ninvalidateHeaders(); n n n } n n n n public void onTabUnselected(Tab tab, FragmentTransaction ft) { n n n n n } n n n n public void onTabReselected(Tab tab, FragmentTransaction ft) { n n n } n n } n n 然后在onBuilderHeader方法里面根据对应的flag加载不同的xml,代码如下: n n n n n [java]n @Override n n n public void onBuildHeaders(List
headers) { n n n n n if (flag == FLAG_TAB_SYSTEM) { n n n n n n n loadHeadersFromResource(R.xml.settings_headers, headers); n n n n n } else if (flag == FLAG_TAB_PERSONAL_INFO) { n n n n n n n loadHeadersFromResource(R.xml.settings_headers_personal_info, headers); n n n n n } else { n n n n n n n loadHeadersFromResource(R.xml.settings_headers_individuation, headers); n n n n n } n n n n n nn nn n n n n updateHeaderList(headers); n nn n n n n mHeaders = headers; n n n } n n @Override n n public void onBuildHeaders(List
headers) { n n if (flag == FLAG_TAB_SYSTEM) { n n loadHeadersFromResource(R.xml.settings_headers, headers); n n } else if (flag == FLAG_TAB_PERSONAL_INFO) { n n loadHeadersFromResource(R.xml.settings_headers_personal_info, headers); n n } else { n n loadHeadersFromResource(R.xml.settings_headers_individuation, headers); n n } n n n nn n n n n n updateHeaderList(headers); n n n n n mHeaders = headers; n n } 总结一下: n n n n 上面所说的只是最基本的界面修改。目前正在做settings,欢迎交流 n

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务