如何通过 styles.xml 更改 MaterialButton 的背景颜色

How to change background color of MaterialButton through styles.xml

我正在尝试更改 material 按钮样式的背景颜色和文本颜色。 但是,我发现 IDE 和 phone 没有变化。 这是问题的屏幕截图。

取消旁边的按钮行为不端,在检查大量属性后我无法更改背景颜色。

这是我的 XML:

        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">


            <com.google.android.material.button.MaterialButton
                android:id="@+id/btn_login_skip"
                style="@style/myMaterialButton.Unboxed"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/cancel"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintRight_toLeftOf="@id/btn_login_login" />

            <com.google.android.material.button.MaterialButton
                android:id="@+id/btn_login_login"
                style="@style/myMaterialButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/pay_deail_submit_btn"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toTopOf="parent" />
        </androidx.constraintlayout.widget.ConstraintLayout>

这是一些风格信息:

<style name="myMaterialButton" parent="Widget.MaterialComponents.Button.OutlinedButton">
        <item name="android:textColor">@color/colorPrimary</item>
        <item name="strokeWidth">2dp</item>
        <item name="android:background">@color/colorPrimaryDark</item>
</style>

颜色如下:

<color name="colorPrimary">@color/silver</color>
    <color name="colorPrimaryDark">#2A2E43</color>

official doc中所述,您可以使用backgroundTint属性:

<style name="myMaterialButton" parent="Widget.MaterialComponents.Button.OutlinedButton">
    <!-- Background color --> 
    <item name="backgroundTint">@color/...</item>
</style>

不要使用 android:background 属性更改背景颜色。

Material Official Source 你应该在你的风格中使用 app:backgroundTint

同时要检查“Widget.MaterialComponents.Button.OutlinedButton”样式,您应该检查设备或模拟器上的按钮,有时具有此样式的按钮在 IDE

中显示良好

MaterialButton 在视觉上不同于 ButtonAppCompatButton。主要区别之一是 AppCompatButton 在左侧和右侧有一个 4dp 的内嵌,而 MaterialButton 没有。

您可以使用app:backgroundTint改变颜色

有了这个你需要使用

android:insetTop="0dp"
android:insetBottom="0dp"