android Setting PreferenceScreen 修改背景

引用:http://blog.sina.com.cn/s/blog_7eeffcc701010f68.html

example:
  • <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:settings="http://schemas.android.com/apk/res/com.seedshope.android">
        <PreferenceScreen
            android:key="wifi_settings"
            android:title="@string/wifi_settings"
            android:summary="@string/wifi_settings_summary" >
            <intent
                android:action="android.intent.action.MAIN"
                android:targetPackage="com.android.settings"
                android:targetClass="com.android.settings.wifi.WifiSettings" />
        </PreferenceScreen>
    </PreferenceScreen>
如果是个PreferenceGroup 可以通过Intent 链接到新建activity extends PreferenceActivity 在onCreate中
addPreferencesFromResource(R.xml.preference); 
setContentView(R.layout.pre_test);
 
--------------------------------------------------------
android实现为PreferenceScreen设置背景图片等
需要使用PreferenceScreen,类似系统中的设置功能,但是需要设置自定义背景,修改PreferenceScreen中的文本的字体颜色等;可以以下做法:

1:在values目录下新建styles.xml(目录下无styles.xml),内容如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>    
    <style name="perference_set_activity">
<item name="android:windowBackground">@drawable/bg01</item>  <!-- 窗口背景 -->
<item name="android:focusable">false</item>
<item name="android:textColor">#ff000000</item> <!-- 字体颜色 -->
<item name="android:colorBackgroundCacheHint">#00000000</item> <!-- 背景缓存色透明,避免拖动全黑 -->
<item name="android:windowNoTitle">false</item> <!-- 是否有标题 -->
    </style>
</resources>
2:在manifest.xml中的相应activity中配置,如:
<activity android:name=".MainActivity" android:theme="@style/sys_set_activity"/>

也可以在onCreate(...)中setTheme(R.style.perference_set_activity),但是此方法必须放在super.onCreate(icicle)之前,否则会出现如背景丢失等错误。




用法就是如此简单,关键在设置 <item name="android:colorBackgroundCacheHint">#00000000</item> <!-- 背景缓存色透明,避免拖动全黑 -->
-------------------------------------------------------
1、在value文件夹下新建一个systemset.xml文件,sytemset.xml内容
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="sys_set_preacitivity">
                <item name="android:windowBackground">@drawable/background</item> 
                <item name="android:focusable">false</item>
                <item name="android:textColor">#ff000000</item>
                <item name="android:cacheColorHint">#ffffffff</item>
                <item name="android:windowNoTitle">false</item>  <!-- 用来设定是否显示标题  -->
        </style>
</resources>
2、在AndroidManifest.xml调用
<activity android:name="SystemSetAcitivity" android:theme="@style/sys_set_preacitivity"></activity>
4、新建一个xml文件,在xml下新建一个system_set.xml,内容是
<?xml version="1.0" encoding="utf-8"?>
<preferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
        android:title="@string/systemTitle" android:layout="@layout/system_set">
        
        
        <preferenceCategory android:title="@string/soundTitle">
        <CheckBoxPreference android:title="@string/muteTitle"
                android:summary="@string/muteSum"></CheckBoxPreference>
        <CheckBoxPreference android:title="@string/shockTitle"
                android:summary="@string/shockSum"></CheckBoxPreference>
        <CheckBoxPreference android:title="@string/soundTitle"
                android:summary="@string/soundSum"></CheckBoxPreference>
</PreferenceCategory>

<preferenceCategory android:title="@string/soundTitle">
        <CheckBoxPreference android:title="@string/muteTitle"
                android:summary="@string/muteSum"></CheckBoxPreference>
        <CheckBoxPreference android:title="@string/shockTitle"
                android:summary="@string/shockSum"></CheckBoxPreference>
        <CheckBoxPreference android:title="@string/soundTitle"
                android:summary="@string/soundSum"></CheckBoxPreference>
</PreferenceCategory>


</PreferenceScreen>
4、在src下新建一个java文件
package com.android.perference.acitivity;

import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;

public class SystemSetAcitivity extends PreferenceActivity 
{

        @Override
        protected void onCreate(Bundle savedInstanceState) 
        {
                super.onCreate(savedInstanceState);
                addPreferencesFromResource(R.xml.system_set);
        }

        @Override
        public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
                        Preference preference)
        {
                return super.onPreferenceTreeClick(preferenceScreen, preference);
        }


}
5、运行程序出现拖动黑屏,一直困扰着我,不知道怎么解决,谁有好的办法
<ignore_js_op>11.png 
拖动某一选项结果:
<ignore_js_op>2222.png
原文地址:https://www.cnblogs.com/sode/p/2879776.html