2010-08-26 150 views
84

我想讓我的android應用程序的用戶能夠設置一些參數。單選按鈕非常適合這種情況。但是,我不喜歡單選按鈕被渲染。是否有可能更改單選按鈕組中的單選按鈕圖標

是否可以更改單選按鈕圖標?例如,是否可以爲每一行創建自定義佈局,並在該佈局中引用我自己的圖標並更改字體等。

回答

156

有可能的話,你必須定義自己的風格單選按鈕,在RES /價值/ styles.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<style name="CustomTheme" parent="android:Theme"> 
    <item name="android:radioButtonStyle">@style/RadioButton</item> 
</style> 
<style name="RadioButton" parent="@android:style/Widget.CompoundButton.RadioButton"> 
    <item name="android:button">@drawable/radio</item> 
</style> 
</resources> 

「無線電」這裏應該是一個有狀態的繪製,radio.xml:

<?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="true" android:state_window_focused="false" 
     android:drawable="@drawable/radio_hover" /> 
    <item android:state_checked="false" android:state_window_focused="false" 
     android:drawable="@drawable/radio_normal" /> 
    <item android:state_checked="true" android:state_pressed="true" 
     android:drawable="@drawable/radio_active" /> 
    <item android:state_checked="false" android:state_pressed="true" 
     android:drawable="@drawable/radio_active" /> 
    <item android:state_checked="true" android:state_focused="true" 
     android:drawable="@drawable/radio_hover" /> 
    <item android:state_checked="false" android:state_focused="true" 
     android:drawable="@drawable/radio_normal_off" /> 
    <item android:state_checked="false" android:drawable="@drawable/radio_normal" /> 
    <item android:state_checked="true" android:drawable="@drawable/radio_hover" /> 
    </selector> 

然後只需將自定義主題應用到整個應用程序或您選擇的活動。

欲瞭解更多有關主題和款式的信息,請看http://brainflush.wordpress.com/2009/03/15/understanding-android-themes-and-styles/這是很好的指導。

+12

您也可以只設置了android:單選按鈕本身的按鈕屬性,而不是定義爲它單獨的自定義樣式。 – 2010-08-26 15:49:21

+6

的確如此,但這不是太好的做法,因爲你通常只有一個單選按鈕。 – 2010-08-26 15:53:25

+0

@KonstantinBurov如果我使用9補丁圖像怎麼辦? – Hades 2013-02-20 06:37:36

28

您可以將自定義圖像放置爲單選按鈕,如普通按鈕。 爲創建繪製文件夾一個XML文件 如

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/sub_screens_aus_hl" 
    android:state_pressed="true"/> 
<item android:drawable="@drawable/sub_screens_aus" 
    android:state_checked="true"/> 
<item android:drawable="@drawable/sub_screens_aus" 
    android:state_focused="true" /> 
<item android:drawable="@drawable/sub_screens_aus_dis" /> 
</selector> 

在這裏,你可以使用3對不同的圖像進行單選

,並使用此文件單選按鈕,如:

android:button="@drawable/aus" 
android:layout_height="120dp" 
android:layout_width="wrap_content" 
0

這裏可能是一個快速的方法,

enter image description here

有了上述的兩種圖標,你應該有一個RadioGroup像這樣

enter image description here

  • 變化RadioGroup的取向水平
  • 每個RadioButton的屬性,嘗試給圖標爲ButtonCompoundButton,
  • 調整填充和大小,
  • ,並在選中時設置背景屬性。
7

更簡單的方法,只改變單選按鈕簡直就是爲繪製權

<RadioButton 
    ... 
    android:button="@null" 
    android:checked="false" 
    android:drawableRight="@drawable/radio_button_selector" /> 

設置選擇和選擇是:

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

這是所有

+0

最簡單的解決方案!謝謝! – Mangesh 2017-12-03 19:45:29

1

是.. ..` 從XML

android:button="@drawable/yourdrawable" 

,並從Java

myRadioButton.setButtonDrawable(resourceId or Drawable); 

`