隐藏(删除) Preference 小结

说明:

1,不是每个Preference 都可以通过这种方法隐藏,例如:languge_setting.xml里面的

 <PreferenceCategory android:key="pointer_settings_category"
            android:title="@string/pointer_settings_category">
        <com.android.settings.PointerSpeedPreference
                android:key="pointer_speed"
                android:title="@string/pointer_speed"
                android:dialogTitle="@string/pointer_speed" />
    </PreferenceCategory>

直接在xml里面注视掉

2,查找key的时候不能只局限一个文件,还是languge_setting.xml的  <PreferenceCategory android:key="voice_category"这个key值,本来对应的

/Settings/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java这个文件,但是你在这个文件是搜不到key="voice_category“这个key值的,要在search里面搜,然后发现他在/Settings/src/com/android/settings/VoiceInputOutputSettings.java文件中

.......................................................................................................................................................................................................................................

隐藏 Preference 有两种方法:

一、先在xml布局里面删,然后在java里面删掉调用的相关部分,但如果很多地方都有调用,那么删除就很麻烦;

二、用removePreference(Preference preference) 方法 删除;//推荐方法

 

实例:

testpreference.xml 代码:


<?xml version="1.0" encoding="utf-8"?>

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
    
    < PreferenceCategory
        android:key=" thirdC "
        android:title="third Category" >
    
        < ListPreference
            android:key=" thirdL "
            android:title="test Listpreference"
            android:summary="first List"
            android:entries="@array/cities"
            android:entryValues="@array/airport_codes"    />
        
        <Preference
            android:title="ttt"
            android:summary="go to new"
            android:key=" ttts "  >
                
        </Preference>    
      
    </PreferenceCategory>
    
</PreferenceScreen>

java代码:

 package wh.zgj;

import android.app.Activity;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceGroup;

public class PreferenceActivity extends android.preference.PreferenceActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);
        addPreferencesFromResource(R.xml.testpreference);
        
        Preference test = findPreference("ttts");
        ((PreferenceGroup)findPreference("thirdC")).removePreference(findPreference("ttts"));//这是删除 二级节点

       getPreferenceScreen().removePreference(findPreference("thirdC"));//这是 删除整个 一级节点

      ((PreferenceGroup)findPreference("thirdC")).removeAll();//这是 删除整个 一级节点下 所有的二级节点,但不会 删除 一级 节点的 节点名,


       // getPreferenceScreen().removePreference(findPreference("ttts"));//这样 无效,这样 只能删除一级节点

    }
}


你可能感兴趣的:(小结,Preference,隐藏删除)