我使用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条答案
按热度按时间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表示背景色调。
oug3syen2#
您可以尝试在'android:backgroundTint'属性上设置选择器,而不是将其设置为'android:background'。如果要更新边框颜色,请考虑更新和'app:strokeColor'
ejk8hzay3#
我遇到了同样的问题,并通过在选择器中使用
android:state_checked="true"
而不是android:state_selected="true"
解决了它。hxzsmxv24#
编程创建MaterialButton