首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >消除RadioButton的涟漪效应,安卓?

消除RadioButton的涟漪效应,安卓?
EN

Stack Overflow用户
提问于 2016-03-04 10:43:24
回答 5查看 25.2K关注 0票数 21

我已经定制了一个RadioButton,用于在右侧添加无线电按钮图像。

代码语言:javascript
运行
复制
<RadioButton
                android:layout_margin="20dp"
                android:drawableRight="@drawable/custom_btn_radio"
                android:button="@null"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Invite Only"/> 

custom_btn_radio.xml

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/check_box" android:state_checked="false"/>
    <item android:drawable="@drawable/close_btn" android:state_checked="true"/>
</selector>

但是,辐射按钮的波纹效应也随之增大。如何从RadioButton中消除纹波效应?以及如何定制波纹效应?

提前谢谢你。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-03-07 06:05:53

使RadioButton背景透明

代码语言:javascript
运行
复制
android:background="#00ffffff"

代码语言:javascript
运行
复制
android:background="@android:color/transparent"
票数 60
EN

Stack Overflow用户

发布于 2020-06-09 10:17:31

colorControlHighlightcolorControlActivated设置为透明颜色为我解决了这个问题:

代码语言:javascript
运行
复制
<style name="transparent_theme">
    <item name="colorControlHighlight">@android:color/transparent</item>
    <item name="colorControlActivated">@android:color/transparent</item>
</style>
票数 3
EN

Stack Overflow用户

发布于 2020-06-17 05:29:18

在“如何自定义波纹效应”部分,使用Material库v1.1.0,背景默认是一个RippleDrawable,其颜色设置为2种颜色的ColorStateList:启用和选中状态下的26α(十六进制#A1) colorControlActivated,以及默认状态下的alpha白色或黑色,这取决于您的亮度(#1F000000)或暗主题(#33FFFFFF)。我只是通过在调试器中查看MaterialCheckBox的背景来检索此信息。

您可以只是覆盖RippleDrawable的颜色,但是您希望使用它的setColor方法。例如,如果在使用DayNight主题时只想更改纹波效应的重音颜色部分,可以运行以下Kotlin代码示例:

代码语言:javascript
运行
复制
private val RIPPLE_ENABLED_CHECKED_STATES = arrayOf(
        intArrayOf(android.R.attr.state_enabled, android.R.attr.state_checked),
        intArrayOf())

fun Int.withAlpha(alpha: Int): Int {
    require(alpha in 0..0xFF)
    return this and 0x00FFFFFF or (alpha shl 24)
}

fun CompoundButton.changeCheckedRippleColor(@ColorInt color: Int) {
    val defaultAlphaColor= if (context.resources.configuration.uiMode and 
                Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES)
            Color.WHITE.withAlpha(51)
        else
            Color.BLACK.withAlpha(31)
    (background as? RippleDrawable)?.setColor(ColorStateList(RIPPLE_ENABLED_CHECKED_STATES,
                intArrayOf(color.withAlpha(26), defaultAlphaColor)))
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35793984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档