Как настроить Floatiing Action Button, чтобы иметь различный внешний вид для включенного и выключенного состояния FAB в Android? - PullRequest
0 голосов
/ 18 апреля 2020

Не удалось найти включенный атрибут для установки в xml для FAB. Я отключил FAB, вызывая setEnabled (false) программно в методе onCreate () моей Activity. Это отключило кнопку и метод onClick не выполнялся. Проблема есть, нет разницы во внешнем виде, когда FAB отключен или включен. Как я могу добиться другого внешнего вида для включенного и выключенного FAB через xml? Я попытался установить clickable = false. Это все еще позволяло нажимать кнопки, и метод onClick был выполнен.

Ответы [ 2 ]

0 голосов
/ 19 апреля 2020

Мне удалось по-другому взглянуть на FAB. Я предпринял следующие шаги:

1) Создал нарисованный файл custom_fab. xml at / res / drawable со следующим содержимым:

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

Это должно иметь другое изображение для включения и выключения state.

2) Создан селектор цвета custom_fab_color. xml at / res / color со следующим содержимым:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/colorFabDisabled" 
        android:state_enabled="false" />
    <item android:color="@color/colorFabEnabled" android:state_enabled="true" /> 
</selector>

Это должен иметь другой цвет фона для включенного и выключенного состояния FAB.

3) Добавлен нужный цвет для включенного и отключенного состояния в res / values ​​/ colors. xml

<resources>
    ...
    <color name="colorFabEnabled">#03DAC5</color>
    <color name="colorFabDisabled">#6DABF9</color>>
</resources>

4) Обновлен файл xml, в котором определен FAB. Поместил sr c и backgroundTint в новый селектор рисования и цвета.

<com.google.android.material.floatingactionbutton.FloatingActionButton
        ...

        android:backgroundTint="@color/custom_fab_color"
        android:src="@drawable/custom_fab" />
0 голосов
/ 18 апреля 2020

Вы можете изменить значок, когда кнопка включена / отключена? Например, если ваш FAB имеет изображение «плюс», замените его на красный «плюс», если он отключен, и на зеленый, если он включен.

Для этого вам нужно будет отслеживать состояние FAB.

private var fabEnabled = true

override fun onCreate(savedInstanceState: Bundle?) {
...

fab.setOnClickListener { view ->
    if (fabEnabled) {
        fab.setImageResource(R.drawable.ic_green_plus)
    } else {
        fab.setImageResource(R.drawable.ic_red_plus)
    }
}

Измените fabEnabled, как вы sh, например, с помощью другой кнопки.

Обратите внимание, этот ответ в Колтин. Пожалуйста, скажите мне, если вы предпочитаете это в java.

...