RadioButton 样式为普通按钮

Posted

技术标签:

【中文标题】RadioButton 样式为普通按钮【英文标题】:RadioButton styled as a normal button 【发布时间】:2017-03-17 03:35:02 【问题描述】:

我正在尝试将我的 RadioButton 设置为普通按钮的样式,并支持按钮上的颜色更改,当单击其中一个按钮时会产生涟漪效果。

现在发生的情况是,所有按钮都是灰色的,当它们被点击时它们会变成紫色,但不会永久地将颜色变为紫色 - 这是我要解决的问题。

这就是按钮现在的样子

whatever.xml 中的 RadioButton

<RadioButton
    style="@style/Widget.AppCompat.Button"
    android:id="@+id/product_size2"
    android:layout_
    android:layout_
    android:text="S"
    android:button="@null"
    android:textColor="@color/material_light_white"/>

style.xml 中的相关项

<item name="android:colorButtonNormal">@color/material_grey_700</item>
<item name="android:colorControlHighlight">@color/material_purple_500</item>

我希望按钮在被选中时保持紫色 - 解决方案?

【问题讨论】:

我认为您应该为此任务使用后台状态选择器 你能详细说明一下吗? 好的,会尝试回答 您是否尝试过为具有不同状态的按钮创建自定义 xml 样式? ***.com/a/29848987/5348534 我看到了这些 xml 打包的答案——我认为一定有更优雅的解决方案 【参考方案1】:

radiobutton_background.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
      <item android:state_checked="true" android:drawable="@color/material_purple_500" />
      <item android:state_checked="false" android:drawable="@color/material_grey_700" />
</selector>

并将其用作背景:

android:background="@drawable/radiobutton_background" />

【讨论】:

不起作用,发生的是背景覆盖了样式,有效地杀死了样式(创建了一个没有高程的立方体)并且没有涟漪效果

以上是关于RadioButton 样式为普通按钮的主要内容,如果未能解决你的问题,请参考以下文章

C#如何动态加载RadioButton控件

Android RadioButton 不居中

WPF 让一组 Button 实现 RadioButton 的当前样式效果

WPF RadioButton/ToggleButton 样式

android 里为啥第一个RadioButton 的按钮会与它的内容部分重叠呢

Harmony OS — RadioButton & RadioContainer单选按钮&单选按钮组