1 つの方法は、ボタンが押されたときの色合いを含むaColorFilter
と aの組み合わせを使用することです。ColorStateList
res/color ディレクトリの xml は次のColorStateList
ようになります。
button_pressed.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="@color/pressed_color"/>
<item android:color="#00000000"/>
</selector>
@color/pressed_color
あなたの色合いはどこにありますか(部分的に透明でなければなりません)。次に、ImageView
サブクラスで、をオーバーライドして色を適用しますdrawableStateChanged()
。
@Override
protected void drawableStateChanged() {
super.drawableStateChanged();
ColorStateList list = getResources().getColorStateList(R.color.button_pressed);
int color = list.getColorForState(getDrawableState(), Color.TRANSPARENT);
setColorFilter(color);
invalidate();
}
ボタンの状態が変化するたびに、このコードが呼び出され、適切な色合いが自動的に設定されます。