bartwell
@bartwell

Как задать цвет для кнопки с сохранением ripple-эффекта?

Использую в своем приложении (minSdk 9) кнопки AppCompatButton. Кнопки в моем приложении бывают разных цветов и могут становиться неактивными (setEnabled(false)).

Хочу сделать их плоскими и с ripple-анимацией, согласно материал-дизайну. Но не могу задать им цвет. Либо теряется ripple-эффект, либо они перестают становиться серыми в неактивном состоянии.

Как задать цвет кнопке, чтобы сохранился ripple-эффект, а в неактивном состоянии были серыми?

В данный момент есть это:

<style name="MyGreenButton"  parent="Widget.AppCompat.Button.Colored">
   <item name="android:colorButtonNormal">#0f0</item>
   <item name="android:textColor">#fff</item>
</style>
<android.support.v7.widget.AppCompatButton
   android:theme="@style/MyGreenButton"/>

Кнопки меняют цвет, текст белый, но нет ripple-эффекта и в неактивном состоянии цвет остается зеленым.
  • Вопрос задан
  • 583 просмотра
Решения вопроса 1
bartwell
@bartwell Автор вопроса
Получилось реализовать так. Проверял на версиях ОС от 2.3.3 до 6.0.1, работает (разумеется ripple-эффект только от 5).

Разметка:
<android.support.v7.widget.AppCompatButton
	style="@style/MyButton"
	...
	/>

styles.xml:
<style name="MyButton" parent="Widget.AppCompat.Button.Colored">
	<item name="backgroundTint">@color/button_background_selector</item>
	<item name="android:textColor">@color/button_text_selector</item>
</style>

button_background_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:color="#555555"/>
    <item android:color="#00ff00"/>
</selector>

button_text_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:color="#888888"/>
    <item android:color="#ffffff"/>
</selector>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Надо использовать особый фон: developer.android.com/intl/ru/reference/android/gr...

И про селекторы почитайте: developer.android.com/intl/ru/guide/topics/resourc...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы