Android - imageView在KitKat上没有colorAccent颜色

时间:2016-08-03 22:09:05

标签: android imageview android-6.0-marshmallow android-4.4-kitkat android-5.1.1-lollipop

我制作了两个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"/>

我该如何解决?

1 个答案:

答案 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:srcCompatImageView分配由AppCompat充气的XML布局中的图像
  • 在AppCompat充实的setImageResource(int)上致电ImageView
  • setImageResource(int)
  • 上致电new AppCompatImageView(...)

来源:这就是AppCompat在内部的做法。