我正在尝试使用Drawable
给DrawableCompat
着色但由于某种原因,Drawable
并不总是尊重state_pressed
我有ColorStateList
看起来像:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/black" android:state_pressed="true" />
<item android:color="@color/yellow" android:state_checked="true" />
<item android:color="@color/gray" />
</selector>
我在我的Drawable
上设置了这个
myButton = (ToggleButton) findViewById(R.id.button);
Drawable drawable = DrawableCompat.wrap(myButton.getBackground());
DrawableCompat.setTintList(drawable, getResources().getColorStateList(R.color.color_list));
myButton.setBackgroundDrawable(DrawableCompat.unwrap(drawable));
myButton.setOnClickListener(this);
ToggleButton
xml如下:
<ToggleButton
android:id="@+id/my_button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1.0"
style="?attr/borderlessButtonStyle"
android:background="@drawable/my_nine_patch"
android:clickable="true"
android:enabled="true"
android:focusable="true"
android:textOff="@string/none"
android:textOn="@string/none" />
我期望的是,当我按下按钮时,它会变为黑色,然后当我按下按钮时,它会显示为黄色或灰色。
然而,最初没有任何反应。当我快速按下按钮时,它会随机地循环显示黑色,黄色和灰色。
有趣的是即使我在ToggleButton
上调用了setPressed(true),它仍然没有被更改为黑色。
我的选择器出了什么问题?我是否需要使用ToggleButton
进行某种神奇的咒语才能使其正常工作?