如何使用颜色选择器可绘制图像视图前棒棒糖

时间:2017-12-15 13:45:27

标签: android android-support-library

我有一个像这样声明的imageview:

    <ImageView
        android:id="@+id/login_settings"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:tint="@drawable/cl_button_text"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="@+id/login_show_password"
        app:srcCompat="@drawable/ic_settings" />

和可绘制的

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" 
        android:color="@color/colorButtonDisabled"/>
    <item android:color="@color/colorButtonNormal"/>
</selector>

这适用于较新的设备

当我在Android 4.4模拟器上运行时,我收到错误:

Android.Views.InflateException: Binary XML file line #1: Error inflating class ImageView ---> Java.Lang.NumberFormatException: Invalid int: "res/drawable/cl_button_text.xml"

当我将视图更改为:

    <ImageView
        android:id="@+id/login_settings"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:tint="@color/colorButtonNormal"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="@+id/login_show_password"
        app:srcCompat="@drawable/ic_settings" />

它正常工作(根据imageview的状态,色调不会改变)

我能做些什么吗?最好是从xml而不是以编程方式?

1 个答案:

答案 0 :(得分:0)

正如您在docs

中所看到的

android:tint

  

可以是“#rgb”,“#arbb”,“#rrggbb”或“#aarrggbb”形式的颜色值。

所以你不能在xlm中使用drawable资源

您可以使用this sollution

进行尝试