android - 使用 MaterialButton 和 shapeAppearance 渐变颜色

标签 android android-button android-styles material-components-android material-components

我想做一个Button像这个 :
enter image description here
我尝试使用 styleshapeAppearance :

<style name="ShapeAppearance.Button" parent="ShapeAppearance.MaterialComponents">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSizeTopLeft">@dimen/button_corner_radius</item>
    <item name="cornerSizeTopRight">5dp</item>
    <item name="cornerSizeBottomRight">@dimen/button_corner_radius</item>
    <item name="cornerSizeBottomLeft">5dp</item>
</style>

<dimen name="button_corner_radius">40dp</dimen>

我在我的 MaterialButton 中应用样式,如下所示:
app:shapeAppearance="@style/ShapeAppearance.Button" 
结果是:
enter image description here
现在,我尝试放置一个线性渐变:
  • #DF2D48 @ 0.0
  • #D72D46 @ 0.2
  • #AF223B @ 0.5
  • #AC2139 @ 1.0

  • 例如 :
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <gradient
            android:startColor="#DF2D48"
            android:centerColor="#D72D46"
            android:endColor="#AC2139"
            android:angle="360" />
    </shape>
    
    我在我的 Shape 样式中应用它:
    <item name="android:background">@drawable/test</item>
    
    但结果是一样的。为什么 ?

    最佳答案

    使用 Material 按钮渐变颜色:
    Gradient MaterialButton
    Material 按钮:
    要使用具有 MaterialButton 背景色调属性的自定义可绘制背景,应为 null 引用代码:
    应用程序:backgroundTint="@null"

     <com.google.android.material.button.MaterialButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:clickable="true"
                    android:focusable="true"
                    android:text="@string/button_enabled"
    
                    app:backgroundTint="@null"
                    android:background="@drawable/gradient_1"
                   />
    
    形状渐变: res/drawable/gradient_1.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="#DD8E54E9"
            android:startColor="#CC225AE0" />
            <corners android:topLeftRadius="18dp"
                android:bottomRightRadius="18dp"
                android:topRightRadius="5dp"
                android:bottomLeftRadius="5dp"
                />
            <stroke
                android:width="6dp"
                android:color="#007879E8" />
    </shape>
    

    关于android - 使用 MaterialButton 和 shapeAppearance 渐变颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63178195/

    相关文章:

    android - Android 中长按向下和长按向上的事件

    java - Android:在行中创建按钮

    android - Android textview 中的 Html Styling 出错

    php - 当 StringBuilder 为 Null 时,它不会继续

    android - 在运行时更改 VideoView 的大小

    android - 如何放大Android Layout Editor?

    android:基本 Activity 上的按钮点击事件

    android - 如何在android中为TextView的文本设置样式或字体?

    Android从不同的布局大小继承样式

    android - 如何让ListView在添加项目时自动垂直向上滚动?