2016-09-09 8 views
2

Я хочу наследовать все стили стиля Button по умолчанию и сохранять цвета фона и тени, которые появляются при нажатии кнопки (так называемая высота). Единственное, что я хочу изменить, это цвет эффекта пульсации (когда вы касаетесь кнопки, а затем передвигаете палец).Как изменить цвет кнопок кнопки Android, сохраняя при этом другие свойства стиля?

Если я использую следующий стиль:

<style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="android:buttonStyle">@style/MyTheme.Button</item> 
</style> 

<style name="MyTheme.Button" parent="Widget.AppCompat.Button.Colored"> 
    <item name="android:background">@drawable/btn_material</item> 
</style> 

и рисуем/btn_material является:

<ripple android:color="#ffff0000"> 
    <item android:id="@android:id/mask" 
    android:drawable="@android:color/white" /> 
</ripple> 

тогда моя кнопка теряет свой цвет фона и высоты тени.

Есть ли способ сказать кнопке сохранить цвета и тени по умолчанию, унаследованные от родителя, и заменить только цвет пульсации на тот, который указан? По сути, я хотел бы достичь чего-то вроде android:backgroundRipple свойства, которое изменило бы только пульсацию, оставив все остальное неповрежденным.

ответ

2

RippleDrawable ripple = (RippleDrawable) view.getBackground();

int [] [] attr = new int [] [] {new int [] {android.R.attr.state_enabled}}; int [] colors = new int [] {Color.RED}; // устанавливает цвет пульсации на красный

ColorStateList color = new Цвет (состояния, цвета); ripple.setColor (цвет);