我构建了一个首选项xml,我将其用作两个不同活动页面中的资源。在一个首选项页面隐藏首选项按钮
唯一的问题是我不希望LOGOUT按钮显示在这两个页面之一中(因为用户尚未连接)。
我现在所做的是:
logoutButton = (Preference)getPreferenceScreen().findPreference("logout");
logoutButton.setEnabled(false);
按钮现在以灰色显示出来..但有没有办法不让它显示在所有?
谢谢!
我构建了一个首选项xml,我将其用作两个不同活动页面中的资源。在一个首选项页面隐藏首选项按钮
唯一的问题是我不希望LOGOUT按钮显示在这两个页面之一中(因为用户尚未连接)。
我现在所做的是:
logoutButton = (Preference)getPreferenceScreen().findPreference("logout");
logoutButton.setEnabled(false);
按钮现在以灰色显示出来..但有没有办法不让它显示在所有?
谢谢!
如果注销按钮(偏好)是在PreferenceScreen,这样做:
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);
这对我来说很好,我有一个任务显示偏好或不在类别取决于系统区域设置。来自@ mik3y的解决方案不起作用,因为首选项不在层次结构的根目录中,而是在PreferenceCategory中。这是该类别中的最后一个首选项,所以我不需要担心动态添加/删除它时的顺序。 – CrazyCoder
很高兴我可以帮助:) – Carnal
对不起,延迟答复(忙几天),但感谢您的优秀解决方案很好! –
与视图不同,首选项没有setVisibility方法。相反,尝试使用PreferenceScreen#removePreference:
PreferenceScreen preferenceScreen = getPreferenceScreen();
logoutButton = (Preference) preferenceScreen.findPreference("logout");
preferenceScreen.removePreference(logoutButton);
您可能需要保留在你的活动logoutButton参考,如果你以后想重新添加。
嗯,不工作,但感谢您的帮助! –
把一些条件和将其添加到onCreate方法例如
if(something){
CheckBoxPreference lp=new CheckBoxPreference(this);
lp.setKey("checkbox");
lp.setTitle("logout");
lp.setEnabled(true);
getPreferenceScreen().addPreference(lp);
}
如果我把真实的东西放在了偏好上,否则它不会。不要把它放在代码中的xml中
你有喜欢的类别内吗? – Carnal
我的解决方案有效吗?这应该。 – Carnal