appcompat-v7自定义按钮颜色

时间:2015-08-10 10:17:39

标签: android xml android-appcompat

是否可以自定义appcompat-v7的按钮颜色?默认按钮是灰色的,我想在整个应用程序中将它们更改为绿色。将android:background设置为drawable可以删除弯曲的边缘。

3 个答案:

答案 0 :(得分:4)

由于您明确询问如何使用appcompat-v7 - 这是推荐的方式。
首先:没有必要创建一个新的drawable。您只需使用具有colorButtonNormal属性的主题即可更改按钮的颜色。

举个例子:

<强> styles.xml

<style name="ThemeButton">
        <item name="colorButtonNormal">#009688</item>
</style>

<强> layout.xml

<!-- other layout elements -->

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="My Button"
    android:textColor="@android:color/white"
    android:theme="@style/ThemeButton" />

<强>结果:

button showing result

这样,当按下按钮时,您将保持标准高度和波纹效果,而使用自定义可绘制时则不然。 (至少如果你没有使用选择器)

答案 1 :(得分:2)

为此,您需要在应用中创建自定义布局。在drawable文件夹中,创建一个名为let_bapton.xml的xml文件。

添加以下代码:

Presentation1

保存xml文件,并在您定义按钮的activity_main.xml文件中,添加custom_button作为背景。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <stroke
                android:width="0dp"
                android:color="#000000" />
            <solid
                android:color="ColourCode of the colour you Want to give"
                />
            <corners
                android:radius="0dp"
                android:bottomLeftRadius="0dp"
                android:bottomRightRadius="0dp"
                android:topLeftRadius="0dp"
                android:topRightRadius="0dp"/>
        </shape>
    </item>
</selector>

现在可以使用

答案 2 :(得分:1)

在你的drawable目录中创建一个名为“shape_btn.xml”的新文件,将android:color改为你喜欢的颜色:

<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
       android:insetLeft="@dimen/abc_button_inset_horizontal_material"
       android:insetTop="@dimen/abc_button_inset_vertical_material"
       android:insetRight="@dimen/abc_button_inset_horizontal_material"
       android:insetBottom="@dimen/abc_button_inset_vertical_material">
    <shape android:shape="rectangle">
        <corners android:radius="@dimen/abc_control_corner_material" />
        <solid android:color="@android:color/black" />
        <padding android:left="@dimen/abc_button_padding_horizontal_material"
                 android:top="@dimen/abc_button_padding_vertical_material"
                 android:right="@dimen/abc_button_padding_horizontal_material"
                 android:bottom="@dimen/abc_button_padding_vertical_material" />
    </shape>
</inset>

并设置为按钮背景:

<Button
    ...
    android:background="@drawable/shape_btn"
    />

如果您想将其应用于应用中的所有按钮,请更改您的主题:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:buttonStyle">@style/MyButtonStyle</item>
</style>

<style name="MyButtonStyle" parent="Widget.AppCompat.Button" >
    <item name="android:background">@drawable/shape_btn</item>
</style>