В разработке приложений под Android часто возникает необходимость изменить цвет кнопки Floating Action Button. Однако, выполнить это не всегда бывает просто. Например, кажется логичным попробовать изменить цвет фона кнопки следующим образом:
<android.support.design.widget.FloatingActionButton ... android:background="@color/mycolor" />
Или же с помощью кода:
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.my_fab); fab.setBackgroundColor(Color.parseColor("#mycolor"));
Однако, эти подходы не приводят к желаемому результату. Кнопка либо остается зеленой, либо становится квадратной. Ниже представлено решение этой проблемы.
Изменение цвета кнопки:
Для изменения цвета кнопки Floating Action Button следует использовать атрибут app:backgroundTint
, а не android:background
. Таким образом, код будет выглядеть следующим образом:
<android.support.design.widget.FloatingActionButton ... app:backgroundTint="@color/mycolor" />
Для изменения цвета в коде можно использовать метод setBackgroundTintList
:
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.my_fab); fab.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#mycolor")));
Добавление эффекта ripple:
Эффект ripple можно добавить с помощью атрибута app:rippleColor
. Вот пример его использования:
<android.support.design.widget.FloatingActionButton ... app:rippleColor="@color/mycolor" />
В коде этот эффект можно добавить следующим образом:
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.my_fab); fab.setRippleColor(Color.parseColor("#mycolor"));
В заключение хочется отметить, что Android предоставляет разработчикам гибкие инструменты для настройки внешнего вида элементов пользовательского интерфейса. Главное — знать, как их правильно использовать.
Добавить комментарий