android 更改MaterialButtonToggleGroup的背景色

i5desfxk  于 2023-05-12  发布在  Android
关注(0)|答案(4)|浏览(191)

我使用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>
vcudknz3

vcudknz31#

对于材质按钮,你应该使用app:backgroundTint而不是android:background Android文档也在这里提到:https://developer.android.com/reference/com/google/android/material/button/MaterialButton
不要使用android:background属性。MaterialButton管理自己的背景可绘制对象,设置新的背景意味着MaterialButton不能再保证它引入的新属性能够正常工作
对于填充按钮,这个类使用主题的?attr/colorPrimary用于背景淡色和?attr/colorOnPrimary用于文本颜色。对于未填充的按钮,这个类使用?attr/colorPrimary表示文本颜色,transparent表示背景色调。

oug3syen

oug3syen2#

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

ejk8hzay

ejk8hzay3#

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

hxzsmxv2

hxzsmxv24#

编程创建MaterialButton

MaterialButtonToggleGroup grupo = new MaterialButtonToggleGroup(this, null, com.google.android.material.R.attr.materialButtonOutlinedStyle);
    MaterialButton btn1 = new MaterialButton(this, null, com.google.android.material.R.attr.materialButtonOutlinedStyle);
    btn1.setText("Ejemplo 1");
    //here 
    btn1.setBackgroundTintList(ColorStateList.valueOf(Color.GREEN));
    btn1.style
    grupo.addView(btn1);

相关问题