Android⾃定义RadioButton样式
上⾯这种3选1的效果如何做呢?⽤代码写?
其实有更简单的办法,忘了RadioButton有什么特性了吗?
我就⽤RadioButton实现了如上效果,其实很简单的。
⾸先定义⼀张background,命名为l,注意该background必须为xml样式的图⽚:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="schemas.android/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 radiogroup
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:d
rawablePadding。
有了这招完全可以实现类似的n选1效果,看下⾯: