如何在API 21中使用不同颜色的材料设计按钮?

时间:2015-10-08 18:05:00

标签: android button colors material-design android-button

来自这个帖子:Android Material Design Button Styles

我无法理解如何单独更改按钮的颜色,因此并非所有按钮都具有相同的颜色。

<item name="android:colorButtonNormal">@color/blue</item>

此解决方案效果很好,但它会更改所有按钮的颜色。

在API 22中,我们可以使用backgroundTint更改不同按钮的颜色,如下所示:

<Button
   android:id="@+id/button1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:elevation="3dp"
   android:backgroundTint="@color/orange" 
   android:text="@string/button1_text"
   android:textAllCaps="true"
   android:textColor="@color/white"
   android:textSize="18sp" />

我们如何在API 21中完成它?

那是我的styles.xml

<style name="AppTheme" parent="@android:style/Theme.Material.Light">
    <item name="android:actionBarStyle">@style/actionBarCustomization</item>
    <item name="android:spinnerDropDownItemStyle">@style/mySpinnerDropDownItemStyle</item>
    <item name="android:spinnerItemStyle">@style/mySpinnerItemStyle</item>
    <item name="android:colorButtonNormal">@color/myDarkBlue</item>
</style>

<style name="actionBarCustomization" parent="@android:style/Widget.Material.Light.ActionBar">
    <item name="android:background">@color/white</item>
    <item name="android:titleTextStyle">@style/actionBarTextColor</item>
</style>

<style name="actionBarTextColor" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/black</item>
</style>

1 个答案:

答案 0 :(得分:0)

好的,我明白了。这是我解决它的方式,我希望它也可以帮助其他人(我并不是说它非常完美)。

我创建了一个可绘制的material_ripple_effect.xml,看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/black">
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android">
            <corners android:radius="2dp" />
            <solid android:color="@color/myOrange" />
        </shape>
    </item>
</ripple>

然后在布局中,我有按钮,我只是将波纹绘制为背景。在activity_main.xml

<Button
   android:id="@+id/button1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:elevation="3dp"
   android:backgroundTint="@color/orange" 
   android:background="@drawable/material_ripple_effect"
   android:text="@string/button1_text"
   android:textAllCaps="true"
   android:textColor="@color/white"
   android:textSize="18sp" />