我有一个用xml定义的背景按钮。我想根据按钮的当前状态对其进行着色,即按下、聚焦、正常。
下面是我的xml文件。另外,我的colored_tint_dark和colored_tint都是半透明的颜色,我试图将它们绘制在我从资源文件夹调用的可绘制图像上。这是问题所在。当UI第一次加载时,图像上有适当的色调,但按下后,按下状态不会显示任何色调,然后正常状态将不会显示任何色调。
<?xml version="1.0" encoding="utf-8"?>
<item android:state_pressed="true" android:drawable="@drawable/rounded_grayscale_pinstripe_button">
<shape>
<gradient
android:endColor="@color/colored_tint"
android:startColor="@color/colored_tint"
android:angle="270" />
<stroke
android:width="0dp"
android:color="@color/colored_tint" />
<corners
android:radius="0dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item android:state_focused="true" android:drawable="@drawable/rounded_grayscale_pinstripe_button">
<shape>
<gradient
android:endColor="@color/colored_tint"
android:startColor="@color/colored_tint"
android:angle="270" />
<stroke
android:width="0dp"
android:color="@color/colored_tint" />
<corners
android:radius="0dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item android:drawable="@drawable/rounded_grayscale_pinstripe_button">
<shape>
<gradient
android:endColor="@color/colored_tint_dark"
android:startColor="@color/colored_tint_dark"
android:angle="270" />
<stroke
android:width="0dp"
android:color="@color/colored_tint_dark" />
<corners
android:radius="0dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
我知道在java中有解决方案,但我特别在寻找xml中的解决方案。谢谢。
发布于 2020-05-17 18:59:29
假设您有一个appCpmpatImageView,并将此**app**:tint="@drawable/custom_tint"添加到compat图像视图中,您的自定义色调选择器如下所示:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/grey" android:state_pressed="true" />
<item android:color="@color/silver" android:state_focused="true" />
<!-- default tint -->
<item android:color="@color/white" />
</selector>因此,您的appCompat ImageView将在不同情况下使用每种颜色作为色调。
https://stackoverflow.com/questions/9472842
复制相似问题