将MaterialToggleButton的选定颜色更改为纯色

11

无法将MaterialToggleButton的所选颜色设置为纯色,只显示颜色主题的透明色调。

我尝试了以下一组代码,输出图像如下所示。

样式中的按钮主题

 <style name="ThemeButtonColorToggle" parent="AppTheme">
        <item name="colorPrimary">@color/colorOrange</item>
        <item name="colorButtonNormal">@color/colorOrange</item>
        <item name="android:backgroundTint">@color/black</item>
        <item name="strokeColor">@color/colorOrange</item>
        <item name="strokeWidth">@dimen/mtrl_btn_stroke_size</item>
        <item name="colorOnPrimary">@color/colorOrange</item>
        <item name="colorOnPrimarySurface">@color/colorOrange</item>
    </style>

XML 代码

    <com.google.android.material.button.MaterialButtonToggleGroup
        android:id="@+id/toggleGroup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:checkedButton="@id/btnAndroid"
        app:layout_constraintTop_toBottomOf="@id/tvName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:selectionRequired="true"
        app:singleSelection="true">

        <com.google.android.material.button.MaterialButton
            android:id="@+id/btnAndroid"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textIsSelectable="true"
            android:theme="@style/ThemeButtonColorToggle"
            android:textColor="@android:color/white"
            android:textColorHighlight="@color/colorOrange"
            android:text="Android" />

        <com.google.android.material.button.MaterialButton
            android:id="@+id/btniOS"
            android:layout_width="wrap_content"
            android:textIsSelectable="true"
            android:textColor="@android:color/white"
            android:theme="@style/ThemeButtonColorToggle"
            android:layout_height="wrap_content"
            android:text="iOS" />

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

输入图片说明

我需要得到如下所示的纯色

输入图片说明

请问有人可以帮我解决这个问题吗?


1
按钮的背景颜色由backgroundTint属性(不带android前缀)定义,但您无法使用android:theme更改此属性。您必须在xml布局中使用style属性来更改它。 - Gabriele Mariotti
1个回答

11

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>

3
我创建了一个新选择器,设置了state_checked="true",并给它设置了突出显示的颜色,效果很好。谢谢! - Meet Vora

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接