Отключить кнопку без использования свойства setEnabled - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть кнопка, где селектор похож на

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/bg_circle_selected"/>
    <item android:drawable="@drawable/bg_circle_disabled" />
</selector>

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

Если я так, как setEnabled false, это будет работать, но есть еще один случай, когда отключенная кнопка должна давать слуховую обратную связь.

Так что, когда я задаю setEnabled как false, другие требования не будут работать, потому что касание отключено.

Есть ли способ отключить кнопку, кроме setEnabled ()?

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

Возможно, вы захотите установить атрибуты кнопки программно из файла Java, а не из XML. Присвойте кнопке идентификатор из вашего XML-файла макета, а затем укажите ссылку на него из Java-файла. Таким образом, вы будете лучше контролировать его поведение.

Например, android:id="@+id/my_button" в XML. Затем Button button = findViewById(R.id.my_button); в методе onCreate.

После этого дайте ему любые атрибуты, которые вы хотите.

0 голосов
/ 03 апреля 2019

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

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true" android:drawable="@drawable/bg_circle_disabled />
<item android:state_pressed="true" android:drawable="@drawable/bg_circle_disabled"/>
<item android:state_enabled="false" android:drawable="@drawable/bg_circle_disabled" />

также не забудьте отследить статус кнопки (включить / отключить)

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