Запретить изменение стиля кнопки

Я изначально установил фон кнопки с этим кодом на onCreateView.

uc.setBackgroundResource(R.drawable.saat_button_none);

Если я изначально устанавливаю background или textColor кнопки, я хочу предотвратить изменение стиля при использовании onClick

public void onClick(View v) {
        switch (v.getId()) {
            case R.id.bir:
            uc.setBackgroundResource(R.drawable.saat_button); //Should not work
            dort.setBackgroundResource(R.drawable.saat_button_sel);
            bes.setBackgroundResource(R.drawable.saat_button_sel);
 }
}

Это возможно?

Обновлено: я не хочу использовать if statement, так как у меня много кнопок, я просто хочу заблокировать стиль кнопки.

Если я изначально задаю какой-то параметр? что это значит?

Hemant Parmar 04.08.2018 11:05

Если я изначально устанавливаю background или textColor кнопки, я имею в виду

ilvthsgm 04.08.2018 11:06

хорошо, чем то, что вы хотите на кнопке после нажатия?

Hemant Parmar 04.08.2018 11:07

Изменить фон других кнопок

ilvthsgm 04.08.2018 11:09

посмотрите это

Hemant Parmar 04.08.2018 11:11

@ilvthsgm обновил ответ ниже, пожалуйста, просмотрите

Krishna Sharma 04.08.2018 11:27
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
6
33
1

Ответы 1

Для этого создать собственный вид, просто расширивViewи переопределить все методы, связанные с фоном и поместите свою логику в их, если фон изменился один раз, то переопределенный метод должен throw exception saying that you can't change the style as it has been changed while setup the default look and feel.

public class CustomButton extends Button {
  boolean backgroundChanged = true;
  public CustomButton(Context context) {
      this(context, null);
  }

  public CustomButton(Context context, @Nullable AttributeSet attrs) {
      this(context, attrs, 0);
  }

  public CustomButton(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
      super(context, attrs, defStyleAttr);
  }

  @Override
  public void setBackgroundResource(int resid) {
      if (backgroundChanged){
          throw new RuntimeException("you can't change the style as it has been changed while setup the default look and feel");
      }
      super.setBackgroundResource(resid);
  }
}

Наконец, в файле макета замените тег <Button на <CustomButton

Другие вопросы по теме