android - MaterialToggleButton 的选定颜色为纯色
问题描述
无法将 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>
我需要得到如下所示的纯色
谁能帮我解决
解决方案
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>
推荐阅读
- flutter - Flutter如何确保在Android Studio中每当应用程序热重载时调用一个函数?
- ios - 指定 iphone-ipad-minimum-performance-a12 的 uirequireddevicecapabilties
- html - 将图像从网页复制/粘贴到 Word,但它们显示为空矩形
- visual-c++ - 如何调试 vc_redist 引导程序的问题?
- reactjs - 构建后反应快照引发错误“EINVAL:无效参数,mkdir”
- node.js - Node.JS 多个新类仅最后一次执行(http 和 socket.io-client)
- python - Python 不允许我修改作为参数传递的列表
- linux - 如何修复在 linux shell 脚本中找不到的命令
- javascript - Reactjs 和节点 JS 中的错误(无法在渲染页面时发布)
- vb.net - 如何在设计模式下以编程方式选择控件