Изменить фон определенного элемента предпочтения

1

У меня есть группа предпочтений под названием "Учетные данные", и я хотел бы изменить цвет этого заголовка на основании того, действительны ли учетные данные или нет.

Я сохраняю ссылку на элемент учетных данных, хватая его, когда я запускаю свою функцию PreferenceActivity

// ... code ...
public enum CredentialsInfo {
    VALID, INVALID, UNKNOWN
}

private Preference credentials;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.my_preferences);

    credentials = findPreference(getString(R.string.credentials));
    // ... etc ...
}

Как только я закончил проверку своих учетных данных, я запустил функцию под названием updateCredentialsBarColor, которая должна загрузить правильную выгрузку и установить учетные данные. Предпочтение соответствует соответствующему цвету. Хотя, когда я пытаюсь изменить цвет, ничего не происходит. Я получаю представление неправильно, и если да, то каков его правильный способ?

private void updateCreditialsBarColor(CredentialsInfo state) {
    Drawable background = null;
    switch(state) {
    case VALID:
        background = getResources().getDrawable(R.drawable.credentials_state_valid);
        break;
    case INVALID:
        background = getResources().getDrawable(R.drawable.credentials_state_invalid);
        break;
    case UNKNOWN:
    default:
        background = getResources().getDrawable(R.drawable.credentials_state_unknown);
        break;
    }
    if(background != null) {
        View credentialsView = credentials.getView(null, null);
        credentialsView.setBackgroundDrawable(background);
    }
}
  • 0
    Вам удалось решить?
Теги:
android-preferences

1 ответ

1
Лучший ответ

Ум, это выглядит хорошо. Вы уверены, что вызов updateCreditialsBarColor() вызван? В конце концов, есть опечатка в имени метода AFAICT.

Вы также можете сбросить некоторую информацию о регистрации в этом методе и сравнить ее с результатами проверки вашей активности в средстве просмотра иерархии, чтобы узнать, получаете ли вы View, который, по вашему мнению, вы.

Вы также можете подумать о создании пользовательского подкласса любого Preference, который инкапсулирует это поведение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню