Android更改默认按钮背景颜色

时间:2014-08-23 18:49:56

标签: android button layout

我试图更改按钮背景颜色(默认,按下并对焦),但我找不到好方法。我已经阅读了很多关于造型布鲁顿的帖子,但遗憾的是这些帖子是为了创造一种竞争的新风格。除了背景颜色,我想保持一切相同。

我更喜欢使用xml,因为我使用单个布局进行多项活动。我也在寻找适用于Android 4.0及以上和4.0以下的解决方案。

有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:1)

使用您想要的按钮设置button_style.xml,如下例所示,并将此文件放在drawable文件夹下的res文件夹中。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" >
        <shape>
            <gradient
                android:startColor="@color/MyButtonDarkGray"
                android:endColor="@color/MyButtonDarkGray"
                android:angle="270" />
            <stroke
                android:width="0dp"
                android:color="@color/Gray" />
            <corners
                android:radius="3dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>

    <item android:state_focused="true" >
        <shape>
            <gradient
                android:endColor="@color/Green"
                android:startColor="@color/Green"
                android:angle="270" />
            <stroke
                android:width="0dp"
                android:color="@color/Gray" />
            <corners
                android:radius="3dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>

    <item>        
        <shape>
            <gradient
                android:endColor="@color/green_leaf_top"
                android:startColor="@color/green_leaf_bottom"
                android:angle="270" />
            <stroke
                android:width="0dp"
                android:color="@color/Gray" />
            <corners
                android:radius="3dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>

</selector>

现在,在styles.xml文件夹下的res\values,添加

<style name="button" parent="@android:style/Widget.Button">
    <item name="android:background">@drawable/button_style</item>
</style>

此样式仅适用于所有按钮。

注意:颜色在res\values\colors.xml中单独定义,您可以使用自己的颜色。

答案 1 :(得分:1)

如果要更改默认按钮颜色而不丢失阴影,则建议更改所需按钮的样式。

您只需将这一行添加到按钮标记中即可

            style="@style/Widget.AppCompat.Button.Colored"

示例代码如下:

 <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            style="@style/Widget.AppCompat.Button.Colored"
            android:text="Rate now"/>

现在在res-> values-> colors.xml文件下的color.xml中将colorAccent更改为所需的颜色。

<color name="colorAccent">your color here</color>

您可以访问官方开发人员页面以获取更多信息Styling buttons

答案 2 :(得分:0)

这是一个用于根据按钮状态更改颜色的xml: 创建一个可绘制的资源,如下所示

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_enabled="false"
        android:drawable="@android:color/black" />
    <item
        android:state_pressed="true"
        android:state_enabled="true"
        android:drawable="@android:color/holo_orange_dark" />
    <item
        android:state_focused="true"
        android:state_enabled="true"
        android:drawable="@android:color/holo_green_dark" />
    <item
        android:state_enabled="true"
        android:drawable="@android:color/holo_blue_bright" />
</selector>

在java代码中设置drawable资源如下:

Button btn = (Button) findViewById(R.id.btn1);
btn.setBackground(this.getResources().getDrawable(R.drawable.mydrawable));

在xml中将drawable设置为xml中按钮的背景:

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/mydrawable" />

注意:您可以设置java代码或xml。