15

我目前正在使用此代码,但背景没有改变。它仍然显示强调色作为背景。

<com.google.android.material.button.MaterialButton
    android:id="@+id/materialButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello"
    app:cornerRadius="32dp"
    android:background="@drawable/gradiant_blue"/>

渐变蓝.xml

<shape
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:shape="rectangle">

   <gradient
       android:angle="-45"
       android:startColor="#2979FF"
       android:endColor="#7C4DFF"/>
</shape>

我目前正在使用

材料组件版本:1.0.0-rc02

4

4 回答 4

26

要使用自定义可绘制背景,MaterialButton您可以使用以下android:background属性:

<MaterialButton
    app:backgroundTint="@null"
    android:background="@drawable/bkg_button_gradient"
    ... />

注意:它至少需要版本1.2.0-alpha06

目前,添加app:backgroundTint="@null"以避免默认情况下自定义背景不会被颜色着色是非常重要的backgroundTint

对于较低版本的材料组件库,您必须使用AppCompatButton.

于 2020-06-09T06:32:12.057 回答
7

LE:从我的角度来看,我建议你使用Buttonor AppCompatButton

尝试这个:

渐变.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:angle="0"
        android:endColor="#027FEE"
        android:startColor="#2CC6F2" />
</shape>

按钮.xml

<!-- replace MaterialButton with Button or AppCompatButton -->
<com.google.android.material.button.MaterialButton
    android:id="@+id/materialButton"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/gradient"
    android:text="Hello" />

结果:

结果

gradient.xmlcorner radius更改为:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:angle="0"
        android:endColor="#027FEE"
        android:startColor="#2CC6F2" />
    <corners android:radius="32dp"/>
</shape>

结果:

结果

于 2018-09-17T16:03:52.943 回答
-1

请阅读材料按钮的文档,从这里

它说:“对于填充按钮,您的主题的 colorPrimary 提供组件的默认背景颜色,文本颜色为 colorOnPrimary。对于未填充按钮,您的主题的 colorPrimary 提供组件的默认文本颜色,并且背景颜色默认为透明。”

我认为这就是您看到其他颜色(强调色)的原因,也请检查设置背景颜色的属性。

提到了以下属性:

app:backgroundTint

app:backgroundTintMode

于 2018-09-17T15:50:47.013 回答
-5

要设置背景,您需要扩展基本主题

Theme.AppCompat.Light.NoActionBar

并不是

Theme.MaterialComponents.Light.NoActionBar

于 2018-12-20T18:17:34.323 回答