Activity和AppCompatActivity中 Radio 改样式

1、在 Activity 中要改变 radio前面的圈,只要改变android:button属性即可

如:
selector_radio.xml 代码如下:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_checked="true"
        android:drawable="@drawable/radio_true"/>
    <item
        android:state_checked="false"
        android:drawable="@drawable/radio_false"/>
</selector>

styles.xml 代码如下:

<style name="rb">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:button">@drawable/selector_radio</item>
        <!--<item name="android:background">@drawable/selector_radio</item>-->
</style>

activity.xml代码如下:

<RadioButton
            android:id="@+id/rb_on"
            style="@style/rb"
            android:text="关闭"
            android:textSize="25sp"
            android:textColor="@color/colorWhite"
            android:layout_marginStart="50dp"/>

radio 的图片不会变形,如果会可改用如下方式:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
	<item
        android:state_checked="true"
        android:drawable="@drawable/bitmap_radio_true"/>
    <item
        android:state_checked="false"
        android:drawable="@drawable/bitmap_radio_false"/>
</selector>

其中,bitmap_radio_true.xml 代码如下:

<bitmap  xmlns:android="http://schemas.android.com/apk/res/android"
    android:gravity="start|center_vertical"
    android:src="@drawable/radio_true" />

bitmap_radio_false.xml 代码如下:

<bitmap  xmlns:android="http://schemas.android.com/apk/res/android"
    android:gravity="start|center_vertical"
    android:src="@drawable/radio_false" />

效果图:
在这里插入图片描述

2、AppCompatActivity 中比较麻烦

如果按上面那种方式,在android4.4.4上测试,预览图会改变,但是真机样式不会更改,据说是安卓版本的问题。
所以需使用改变 android:background 属性的方式,即

<item name="android:background">@drawable/selector_radio</item>

但这样图片会拉伸变宽置覆盖text属性的值如:
如上图,左边无text属性
并且在真机上发现自带的圈并没有消失。需添上如下代码:

Bitmap rb_img = null; 
Drawable drawable_rb = new BitmapDrawable(getResources(),rb_img);
((RadioButton)findViewById(R.id.rb_on)).setButtonDrawable(drawable_rb);

这种情况如果还需要文字说明,要另外增加 TextView,并将radido的 android:layout_width值增大置覆盖 TextView,并使 selector 的 android:drawable 改为 bit样式,代码在上面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值