我有一个用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中的解决方案。谢谢。
发布于 2016-03-17 18:15:37
创建选择器tint_menu_item.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/white" android:state_pressed="true" />
<item android:color="@color/white" android:state_activated="true" />
<item android:color="@color/green" />
</selector>(在我的示例中,选中图像时为白色,未选中时为绿色)
然后,在您的xml中,您可以向ImageView添加染色属性:
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:tint="@color/tint_menu_item"
android:src="@drawable/ic_menu_home" />您还可以通过textColor属性在TextView上使用此选择器:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/tint_menu_item" />发布于 2012-08-30 19:08:06
你试过selector吗?
您可以在HERE中找到一些示例
发布于 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
复制相似问题