在背景的XML之外指定Button的背景形状颜色

时间:2015-12-12 02:57:15

标签: android android-view android-drawable android-button android-shape

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

根据state

Button,形状会有不同的颜色

我是否可以在state的xml中指定每个Button的颜色?我很抱歉新手问题。 请问任何指南?

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"/>

2 个答案:

答案 0 :(得分:1)

这是一个迟到的答案,但我在this post中详细描述了你想要的内容,甚至如何在你的背景中产生涟漪,你可能想看一下

答案 1 :(得分: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>