0

我有一个Button使用形状作为背景的。

形状将根据不同的颜色有不同的state颜色Button

我可以在statexmlButton中指定每个颜色的颜色吗?对于新手的问题,我很抱歉。请问有什么指导吗?

button_background.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="true" >
        <shape android:shape="rectangle"  >
            <corners android:radius="10dp" />
            <solid android:color="@color/colorPrimary" />
        </shape>
    </item>
    <item android:state_focused="true">
        <shape android:shape="rectangle"  >
            <corners android:radius="10dp" />
            <solid android:color="@color/colorPrimary" />
        </shape>
    </item>
    <item >
        <shape android:shape="rectangle"  >
            <corners android:radius="10dp" />
            <solid android:color="@color/colorWhite" />
        </shape>
    </item>
</selector>

目前如何称呼

    <Button
        android:id="@+id/loginButton"
        android:background="@drawable/button_background"
        android:text="@string/login_button_title"/>
4

2 回答 2

1

这是一个迟到的答案,但我在这篇文章中详细描述了你想要什么,甚至如何在你的背景中产生涟漪,你可能想看看

于 2016-10-23T01:22:29.500 回答
0

在 XML 中创建颜色状态列表。

res/color/button_bg.xml

<selector xmlns:android="...">
    <item android:color="@color/colorPrimary" android:state_focused="true" />
    <item android:color="@color/colorPrimary" android:state_pressed="true" />
    <item android:color="@color/colorWhite" />
</selector>

然后你的形状drawable可以简单地使用这个颜色资源:

res/drawable/button_bg.xml

<shape xmlns:android="..."
    android:shape="rectangle"  >

    <corners android:radius="10dp" />
    <solid android:color="@color/button_bg" />
</shape>
于 2015-12-12T04:53:28.767 回答