#android #android-studio #kotlin #material-design #floating-action-button
#Android #android-studio #kotlin #материал-дизайн #плавающая кнопка действия
Вопрос:
В моем приложении я хочу отключить FAB в определенных случаях. Но когда у FAB есть пользовательский backgroundTint, цвет фона этого FAB остается неизменным (не меняется на отключенный цвет фона FAB). FAB отключен, но цвет не меняется.
Вот пример: файл макета
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@ id/deleteButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_baseline_clear_24"
app:tint="@color/white"
app:backgroundTint="@color/darkgray_02"
android:layout_margin="10dp"/>
И вот код:
binding.deleteButton.isEnabled = false
Здесь изображение с соответствующим кодом
A: IsEnabled = false, нет пользовательского цвета
B: IsEnabled = false, app:backgroundTint=»@color / darkgray_02″
Есть ли способ установить пользовательский цвет для FAB и одновременно отключить FAB, чтобы цвет менялся на цвет, отключенный по умолчанию, когда я отключаю FAB?
Ответ №1:
Хорошо, я понял это. Оказывается, есть и другие сообщения об этом.
Чтобы иметь несколько состояний FAB (включено и отключено), вам необходимо установить ColorStateList вместо одного цвета. Итак, я создал xml: drawable/fab_custom_style.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:alpha="0.12" android:color="?attr/colorOnSurface" android:state_enabled="false"/>
<item android:color="@color/darkgray_02"/>
</selector>
и установите backgroundTint для использования этого селектора xml:
app:backgroundTint="@drawable/fab_custom_style.xml"
Теперь у FAB есть два состояния для отключено и включено.
Для отключенного FAB я использую стандартный отключенный цвет FAB = «?attr / colorOnSurface» (нашел его здесь: https://github.com/material-components/material-components-android/blob/master/lib/java/com/google/android/material/floatingactionbutton/res/color/mtrl_fab_bg_color_selector.xml)
Для включенного FAB я использую свой пользовательский цвет: «@color / darkgray_02»
Ответ №2:
Извините за опоздание. Я использую для изменения цвета фона FAB таким образом:
- Мы знаем, что потрясающий фон можно рисовать.
- вместо того, чтобы создавать чертеж только для изменения цвета фона, вы могли бы сделать это
yourFabButton.getBackground().setTint(getContext().getColor(R.color.colorPrimary));