2

我正在使用 MaterialButtonToggleGroup 创建选择器按钮。我想更改 MaterialButton 按钮的背景颜色。它的默认颜色是浅蓝色,我想把它改成浅绿色。目前,我正在使用可绘制扇区来更改背景颜色,但它不起作用。

默认颜色在此处输入图像描述

想要这个颜色 在此处输入图像描述

这是我的布局,

<com.google.android.material.button.MaterialButtonToggleGroup
    android:id="@+id/toggleContent"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:checkedButton="@id/btnOutline"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    android:visibility="visible"
    app:layout_constraintRight_toRightOf="parent"
    app:singleSelection="true">

    <com.google.android.material.button.MaterialButton
        android:id="@+id/btnOutline"
        style="@style/Widget.MaterialComponents.Button.OutlinedButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/button_selector"
        android:text="@string/outline"
        android:textAllCaps="false" />

    <com.google.android.material.button.MaterialButton
        android:id="@+id/btnMain"
        style="@style/Widget.MaterialComponents.Button.OutlinedButton"
        android:background="@drawable/button_selector"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/main"
        android:textAllCaps="false" />

</com.google.android.material.button.MaterialButtonToggleGroup>

这是我的可绘制文件“button_selector”,

    <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_selected="true" android:drawable="@drawable/selector_color"/>

</selector>

这是“selector_color”文件,

  <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <solid android:color="#93cdcb"/>
</shape>
4

4 回答 4

2

对于材质按钮,您应该使用 app:backgroundTint 而不是 android:background Android 文档也在这里提到: https ://developer.android.com/reference/com/google/android/material/button/MaterialButton

不要使用 android:background 属性。MaterialButton 管理自己的背景drawable,设置新的背景意味着MaterialButton 不能再保证它引入的新属性会正常工作

对于填充按钮,此类使用主题的 ?attr/colorPrimary 作为背景色,使用 ?attr/colorOnPrimary 作为文本颜色。对于未填充的按钮,此类使用 ?attr/colorPrimary 作为文本颜色并使用透明作为背景色。

于 2021-02-01T08:47:28.020 回答
1

您可以尝试在“ android:backgroundTint ”属性上设置选择器,而不是将其设置为“ android :background ”。如果要更新边框颜色,请考虑更新和 ' app:strokeColor '

于 2021-02-01T08:39:39.250 回答
1

MaterialButton 的背景颜色由 backgroundTint 属性定义。

默认值为:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:color="?attr/colorPrimary" android:state_enabled="true"/>
  <item android:alpha="0.12" android:color="?attr/colorOnSurface"/>
</selector>

您可以在 xml 布局中更改它,也可以定义自定义样式:

<com.google.android.material.button.MaterialButton
           style="@style/ButtonStyle"
           .. />

和:

<style name="ButtonStyle" parent="Widget.MaterialComponents.Button">
    <item name="backgroundTint">@color/your_button_background_selector</item>
    ...
</style>
于 2021-02-01T08:47:07.293 回答
0

我遇到了同样的问题,并通过在选择器中使用android:state_checked="true"而不是解决了它android:state_selected="true"

于 2021-05-12T15:21:02.283 回答