我制作了两个imageView
,点击后,它们会采用colorAccent
的颜色。这似乎适用于Lollipop和Marshmallow,但不适用于KitKat。另外,当他们没有被点击时,他们应该是灰色的,但在Kitkat他们总是黑色的。这是一个例子:
这是我的代码:
COLORS.XML
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="itemNotSelected">#bdbdbd</color> <!-- this is GREY -->
我点击imageView
时如何尝试更改颜色的示例:
if(REPEAT_CLICKED == REPEAT_DISABLED) {
REPEAT_CLICKED = REPEAT_ALL;
mRepeatButton.setImageResource(R.drawable.vector_repeat_all);
}
vector_repeat_all.xml:
<vector android:height="96dp" android:viewportHeight="24.0"
android:viewportWidth="24.0" android:width="96dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@color/colorAccent" android:pathData="M7,7h10v3l4,-4 -4,-4v3L5,5v6h2L7,7zM17,17L7,17v-3l-4,4 4,4v-3h12v-6h-2v4z"/>
我该如何解决?
答案 0 :(得分:0)
将您想要的颜色移动到android:tint
并让路径为任何纯色。
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:tint="?colorAccent"
android:height="96dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0"
android:width="96dp">
<path android:fillColor="#FF000000" android:pathData="M7,7h10v3l4,-4 -4,-4v3L5,5v6h2L7,7zM17,17L7,17v-3l-4,4 4,4v-3h12v-6h-2v4z"/>
</vector>
如果符合以下条件,这将适用于API 21及更高版本的API 21以下版本。
app:srcCompat
以ImageView
分配由AppCompat充气的XML布局中的图像setImageResource(int)
上致电ImageView
setImageResource(int)
new AppCompatImageView(...)
来源:这就是AppCompat在内部的做法。