Скрыть кнопку настроек на одной странице настроек - PullRequest
1 голос
/ 19 октября 2011

Я создал XML-файл настроек, который я использую в качестве ресурса на двух разных страницах активности.

Единственная проблема заключается в том, что я не хочу, чтобы кнопка «ВЫХОД» отображалась на одной из этих двух страниц (поскольку пользовательеще не подключен).

Что я сделал сейчас:

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

кнопка теперь отображается серым цветом ... но есть ли способ вообще не показывать ее ??

Спасибо!

Ответы [ 3 ]

10 голосов
/ 28 октября 2011

Если ваша кнопка выхода (Preference) находится на PreferenceScreen, сделайте это:

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

Иначе, если ваша кнопка выхода из системы (Preference) находится в PreferenceCategory (которая находится внутри PreferenceScreen), сделайте следующее:

PreferenceCategory category = (PreferenceCategory) findPreference("category_name");
Preference logout = findPrefence("logout");
category.removePreference(logout);
2 голосов
/ 27 октября 2011

В отличие от представлений, в настройках нет метода setVisibility.Вместо этого попробуйте использовать PreferenceScreen # removePreference :

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

Возможно, вам понадобится сохранить ссылку на logoutButton в вашей активности, если вы позже захотите добавить ее обратно.

0 голосов
/ 28 октября 2011

поставьте некоторое условие и добавьте его в метод oncreate, например,

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

, если я задаю значение true, предпочтение показывает, что иначе это не так.Не помещайте это в XML только в коде

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...