Android 自定义RadioButton样式

 
上面这种3选1的效果如何做呢?用代码写? 
其实有更简单的办法,忘了RadioButton有什么特性了吗? 
我就用RadioButton实现了如上效果,其实很简单的。 
首先定义一张background,命名为radio.xml,注意该background必须为xml样式的图片:

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

这里我们只要关心state_checked状态就可以了。所以很简单的配置。 
接下来就是布局文件里面引用这张图片了:

<RadioGroup
        android:gravity="center"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        >
        <RadioButton
            android:id="@+id/btn_0"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="最新信息"
            android:textSize="17.0sp"
            android:textColor="@android:color/black"
            android:gravity="center"
            android:layout_weight="1"
            android:checked="true"
            android:button="@null"
            android:background="@drawable/radio"
            />
        <RadioButton
            android:id="@+id/btn_1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="在线专家"
            android:textSize="17.0sp"
            android:textColor="@android:color/black"
            android:gravity="center"
            android:layout_weight="1"
            android:button="@null"
            android:background="@drawable/radio"
            />
        <RadioButton
            android:id="@+id/btn_2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="预约服务"
            android:textSize="17.0sp"
            android:textColor="@android:color/black"
            android:gravity="center"
            android:layout_weight="1"
            android:button="@null"
            android:background="@drawable/radio"
            />
    </RadioGroup>  

注意将android:button="@null"全部设为null,并且将android:background="@drawable/radio"设为刚才新建的图片。这样就完成了。 
一句代码都不用写! 
看看竖下来的效果: 
 
傍边有图标的怎么办? 
 
也很简单啦,只要在每个RadioButton上加android:drawableLeft="@drawable/tubiao_0"就可以了。 
另外要设置图标与文字的距离怎么办? 
有一个方法setCompoundDrawablePadding(pad)可以设置图标与文字的距离,对应的属性为android:drawablePadding。 
有了这招完全可以实现类似的n选1效果,看下面: 
 
 
应用: 
http://www.iteye.com/topic/1116261#2256664

时间: 2024-10-09 06:09:30

Android 自定义RadioButton样式的相关文章

转:android 自定义RadioButton样式

http://gundumw100.iteye.com/blog/1146527  上面这种3选1的效果如何做呢?用代码写? 其实有更简单的办法,忘了RadioButton有什么特性了吗? 我就用RadioButton实现了如上效果,其实很简单的. 首先定义一张background,命名为radio.xml,注意该background必须为xml样式的图片: Xml代码   <?xml version="1.0" encoding="utf-8"?> &

android自定义radiobutton样式文字颜色随选中状态而改变

主要是写一个 color selector 在res/建一个文件夹取名color res/color/color_radiobutton.xml 1 <selector xmlns:android="http://schemas.android.com/apk/res/android"> 2 <item android:state_checked="true" android:color="@color/color_text_select

wpf radiobuttong 去前面的圆点, 自定义radiobutton样式

自定义radiobutton样式代码: <windows.Resources> <LinearGradientBrush x:Key="CheckRadioFillNormal"> <GradientStop Color="#FFD2D4D2" Offset="0"/> <GradientStop Color="#FFFFFFFF" Offset="1"/>

Android 自定义RadioButton的样式

在res/drawable新建radiobutton.xml如下 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="true" android:state_checked="true" android:drawable="@drawable/check" />

android 自定义progressbar 样式

在res下创建drawable文件夹,新建文件drawable/progressbar_color.xml <layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <!-- 背景 gradient是

自定义RadioButton样式

一,在RadioButton标签上使用 android:button="@drawable/pay_radio_selector" 可以修改按钮的样式 二,在RadioButton标签上使用 android:drawableLeft="@drawable/****" 可以为其添加图标 三,使用 android:drawablePadding="20dp" 可以设置图标与文字之间的距离 四,使用 android:paddingLeft="

#Android 自定义字体样式

Android中自定义字体设置一般通过 facetype属性进行设置,先看一下官网提供的方法 顾名思义 就是说我们可以通过使用项目中assets文件下的资产文件或者是android本身的系统文件进行字体设置. 如果使用assets方法的话,首先我们需要在项目路径下创建assets文件夹, 如图所示,设置好文件之后,可以使用 Typeface typeface1 = Typeface.createFromAsset(this.getAssets(),"fonts/1.TTF"); tvT

Android自定义Dialog样式

效果图: 核心代码: package com.zms.toast; import android.app.Dialog; import android.content.Context; import android.content.res.Resources; import android.os.Handler; import android.os.Message; import android.util.DisplayMetrics; import android.view.Gravity;

Android自定义进度条样式

最近在做一个widget,上面需要一个progressbar,产品经理和设计师给出来的东西是要实现一个圆角的progress和自定义的颜色,研究一小下,分享出来给大家哦. 测试于:Android4.0+ 操作步骤: 1.创建你的layout文件引用progressbar如下,标红处引用你自定的样式: <ProgressBar android:id="@+id/progressDownload" style="?android:attr/progressBarStyleH