在MaterialButton android

时间:2019-05-12 06:09:24

标签: android material-design

我一直在使用新的MaterialButton类。当用户单击按钮时,我希望按钮上的颜色不同。

从一开始我就一直在使用选择器可绘制对象,但是在MaterialButton上似乎不起作用。

<com.google.android.material.button.MaterialButton android:layout_width="0dp"
                                                       android:text="@string/login"
                                                       style="@style/Widget.Mohre.Button"
                                                       android:layout_height="wrap_content"
                                                       app:cornerRadius="@dimen/card_corner_radius"
                                                       android:padding="@dimen/unit_large"
                                                       android:id="@+id/loginBtn"

/>

我的Widget.Mohre.Button样式

<style name="Widget.Mohre.Button" parent="Widget.MaterialComponents.Button">
        <item name="android:textColor">@color/textColorWhite</item>
        <item name="android:background">@drawable/mohre_button_selector</item>
        <item name="android:textAppearance">@style/TextAppearance.Button</item>
        <item name="android:stateListAnimator" tools:ignore="NewApi">@animator/button_state_list_anim</item>
    </style>

我的选择器可绘制

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/mohre_button_pressed" android:state_pressed="true" />
<item android:drawable="@drawable/mohre_button_selected" android:state_enabled="false" android:state_pressed="false" />
<item android:drawable="@drawable/mohre_button_normal" />

我的个人可绘制对象只是具有不同颜色的矩形形状

<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
    <corners android:radius="30dp"></corners>
    <solid android:color="#3a516a"></solid>
</shape>

按钮完全不显示选择器可绘制对象的颜色。它只是显示应用程序的默认强调颜色

1 个答案:

答案 0 :(得分:1)

如果您想要一个具有自定义背景的按钮(例如应用 <selector>),但您的主题设置为使用 Theme.MaterialComponents(现在是 2021 年),您可以切换 XML布局中的元素为 <android.widget.Button> 而不是 <Button>。这应该会导致 Android 的 Material 组件忽略该元素,并且您可以根据 XML 属性正常操作此按钮。