在一个首选项页面上隐藏首选项按钮

时间:2011-10-19 17:48:11

标签: android preferences

我构建了一个首选项xml,我在两个不同的活动页面中用作资源。

唯一的问题是我不希望LOGOUT按钮显示在这两个页面中的一个(因为用户尚未连接)。

我现在所做的是:

logoutButton = (Preference)getPreferenceScreen().findPreference("logout");
logoutButton.setEnabled(false);

按钮现在显示为灰色..但有没有办法让它完全显示?

谢谢!

3 个答案:

答案 0 :(得分:10)

如果您的注销按钮(首选项)位于首选项屏幕中,请执行以下操作:

PreferenceScreen screen = getPreferenceScreen();
Preference logout = findPreference("logout");
screen.removePreference(logout);

否则,如果您的注销按钮(首选项)位于PreferenceCategory(位于PreferenceScreen内),请执行以下操作:

PreferenceCategory category = (PreferenceCategory) findPreference("category_name");
Preference logout = findPrefence("logout");
category.removePreference(logout);

答案 1 :(得分:2)

与Views不同,Preferences没有setVisibility方法。相反,请尝试使用PreferenceScreen#removePreference

PreferenceScreen preferenceScreen = getPreferenceScreen();
logoutButton = (Preference) preferenceScreen.findPreference("logout");
preferenceScreen.removePreference(logoutButton);

如果您以后希望将其添加回活动,则可能需要在活动中保留对logoutButton的引用。

答案 2 :(得分:0)

添加一些条件并将其添加到oncreate方法中,例如

if(something){
    CheckBoxPreference lp=new CheckBoxPreference(this);
    lp.setKey("checkbox");
    lp.setTitle("logout");
    lp.setEnabled(true);
    getPreferenceScreen().addPreference(lp);
    }

如果我把某些东西置于正确状态,则偏好显示,否则它不会。不要只在代码

中将它放在xml中