我需要在用户按下时更改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>
答案 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);
}