Android ToggleButton无法可靠地接收state_pressed

时间:2015-12-15 16:05:10

标签: android android-support-library android-drawable

我正在尝试使用DrawableDrawableCompat着色但由于某种原因,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进行某种神奇的咒语才能使其正常工作?

0 个答案:

没有答案