Button.setEnabled (false) не делает кнопку серой - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть Button в моем приложении.Когда я использую setEnabled(false), он становится серым.Однако, если я сначала изменю фон Button, а затем вызову setEnabled(false), он не станет серым (но Button не включен).Почему это так и как я могу сделать его серым, что бы с ним ни случилось?

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

На мой взгляд, самым простым решением было бы установить фон кнопки в вашей активности.Например:

button.setAlpha(.5f);
button.setClickable(false);

.5f альфа эквивалентна серой кнопке отключения.Это часто полезно, если фон вашей кнопки - изображение.

0 голосов
/ 21 ноября 2018

Почему это

Обычно фон для Button имеет значение ColorStateList: определенные цвета назначаются различным состояниям, таким как «включено» или «отключено» (возможно)состояния зависят от типа виджета).Если состояние изменяется, среда выполнения соответственно меняет цвет фона.

Вы указали один цвет в качестве фона Button, поэтому он будет использоваться независимо от текущего состояния Button is.

и как я могу сделать его серым, что бы с ним не случилось?

Создать ресурс для рисования, содержащий ColorStateList (следующий, например, ) и используйте его как фон для рисования.

0 голосов
/ 21 ноября 2018

Есть несколько решений для вашей проблемы: Самый простой: изменить фон кнопки.Или вы можете использовать селектор:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_enabled="false"
        android:color="#9e9e9e"
        />
    <item
        android:state_enabled="true"
        android:color="#56934d"
        />
</selector>
...