说明:
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 代码:
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"));//这样 无效,这样 只能删除一级节点
}
}