上面這種3選1的效果如何作呢?用代碼寫?
其實有更簡單的辦法,忘了RadioButton有什麼特性了嗎?
我就用RadioButton實現瞭如上效果,其實很簡單的。
首先定義一張background,命名爲radio.xml,注意該background必須爲xml樣式的圖片:
android
<?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狀態就能夠了。因此很簡單的配置。
接下來就是佈局文件裏面引用這張圖片了:
spa
<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 xml