Как мне сделать отключенное состояние Spinner'а отключенным? - PullRequest
28 голосов
/ 04 октября 2011

Когда я отключаю мой Spinner, он выглядит почти так же, как и до отключения, т.е.

До

enter image description here

* После 1011 *

enter image description here

Он отключен и поэтому функционально все в порядке, но я бы хотел, чтобы выглядел отключенным. Этот вопрос, кажется, задавался вокруг ловушек ( здесь и здесь например), но самый близкий кто-то пришел к ответу это , которое кажется неполным, и я все равно не понимаю?!?

Ромен сказал это должно было быть исправлено в Froyo и далее, но я использую Honeycomb, и, как вы можете видеть на скриншотах, он не работает. Любой совет будет оценен.

Ответы [ 12 ]

0 голосов
/ 03 декабря 2014

Мой может быть особым случаем или из-за порядка, в котором я устанавливаю свой адаптер, или из-за того, что я использую два пользовательских прядильщика классов:

  1. Первый класс расширяет класс LinearLayout, а
  2. Второй расширяет класс Spinner.

Ключи, по которым я нашел отключенный счетчик, были следующими:

  1. Обнулить старый объект в функции setEnabled и
  2. Настройка цвета в функции onDraw.

Внутри обоих этих пользовательских классов спиннеров у меня есть специальная setEnabled функция, подобная этой, аннулирующая старое представление:

public void setEnabled(Boolean enabled) {
    super.setEnabled(enabled);
    invalidate();
}

Я также переопределяю функцию onDraw в каждом своем специальном блесне класс:

@Override
public void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    if (this.getChildAt(0) != null) {
        this.getChildAt(0).setAlpha(this.isEnabled() ? 1.0f : 0.7f);
    }
}
0 голосов
/ 17 октября 2013

Представления могут быть составлены из нескольких сенсорных элементов. Вы должны отключить их все, как это:

for(View lol : your_spinner.getTouchables() ) {
    lol.setEnabled(false);
}

Если это простой, так как он также возвращает себя:

Найдите и верните все сенсорные представления, которые являются потомками этого представления, возможно, включая это представление, если оно само по себе является сенсорным.

Посмотреть # getTouchables ()

...