我构建了一个首选项xml,我在两个不同的活动页面中用作资源。
唯一的问题是我不希望LOGOUT按钮显示在这两个页面中的一个(因为用户尚未连接)。
我现在所做的是:
logoutButton = (Preference)getPreferenceScreen().findPreference("logout");
logoutButton.setEnabled(false);
按钮现在显示为灰色..但有没有办法让它完全显示?
谢谢!
答案 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中