State List Drawable:覆盖XML中的默认颜色

时间:2016-11-14 10:52:29

标签: android android-layout android-xml android-drawable android-resources

我有一个状态列表选择器,可以在按下/聚焦时为我的ImageView提供不同的背景颜色:

<!--lightbutton_selector.xml -->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true"
        android:drawable="@drawable/lightbutton_pressed"/>
    <item android:state_pressed="true"
        android:drawable="@drawable/lightbutton_pressed"/>
    <item android:drawable="@drawable/lightbutton_default"/>
</selector>

个别国家看起来像这样:

<!--lightbutton_pressed.xml-->
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@color/yellow" />
</shape>

如果我在XML中将其设置为

,则可以正常工作
<ImageView
    android:background="@drawable/lightbutton_selector"
    ...

但是现在我连续使用了几个不同颜色的按钮:

colored buttons

其背景应根据选择器而改变,即如果我按下最右边的那个:

enter image description here

我的目标是在XML中指定按钮的不同颜色和状态选择器。 如果不为每种颜色的红色,绿色,灰色创建一个新的选择器,这是否可行?

我通常会设置这样的颜色,这显然会覆盖背景选择器:

<ImageView
    android:background="@color/negative"
    ...

我尝试了什么(失败了):

1.选择时颜色变为黄色但未设置默认颜色

<ImageView
    app:srcCompat="@drawable/ic_share"
    android:drawable="@color/grey"
    android:background="@drawable/lightbutton_selector"
    ...

2.Vice-Versa:设置了默认颜色,但选择器不会改变

<ImageView
    app:srcCompat="@drawable/ic_share"
    android:background="@color/grey"
    android:drawable="@drawable/lightbutton_selector"
    ...

3.色调适用于所有颜色,因此选择颜色为灰色,而不是黄色

<ImageView
    app:srcCompat="@drawable/ic_share"
    android:backgroundTint="@color/grey"
    android:background="@drawable/lightbutton_selector"
    ...

0 个答案:

没有答案