选择器在API上的颜色不会高于21

时间:2016-05-10 12:12:21

标签: android selector

我需要在用户按下时更改ImageButton的颜色。它的工作方式与我在API 19和21上的预期相同,但是对于高于21的API而言,它并没有,我无法理解为什么。

这是选择器的XML:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <corners
                android:radius="100dp"
                />
            <solid
                android:color="#427A53"
                />
            <padding
                android:bottom="0dp"
                android:left="0dp"
                android:right="0dp"
                android:top="0dp"
                />
            <size
                android:width="60dp"
                android:height="60dp"
                />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <corners
                android:radius="100dp"
                />
            <solid
                android:color="#66bb6a"
                />
            <padding
                android:bottom="0dp"
                android:left="0dp"
                android:right="0dp"
                android:top="0dp"
                />
            <size
                android:width="60dp"
                android:height="60dp"
                />
        </shape>
    </item>
</selector>

2 个答案:

答案 0 :(得分:0)

<强>解

问题出现在ImageButton的android:backgroundTint属性中,它是相同的颜色,它“阻止”颜色的变化。

答案 1 :(得分:0)

bcz选择器工作低于api 21,对于更高版本,你可以像这样使用..

 RippleDrawable rippleImgStart;  
 final int ColorWhiteOpacity = Color.argb(75,255,255,255); 
 imgStart = ContextCompat.getDrawable(this, R.drawable.start); 
 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            rippleImgStart = new
                    RippleDrawable(ColorStateList.valueOf(ColorWhiteOpacity), imgStart, null);
            btnselectvideo.setImageDrawable(rippleImgStart);
}