2010-08-26 13 views
84

Quiero permitirle al usuario de mi aplicación de Android la capacidad de establecer algunos parámetros. El botón de radio es ideal para esta situación. Sin embargo, no me gusta que se muestren los botones de radio.¿Es posible cambiar el ícono de botón de radio en un grupo de botones de radio de Android?

¿Es posible cambiar el icono del botón de opción? Por ejemplo, es posible crear un diseño personalizado para cada fila y en ese diseño hacer referencia a mi propio icono y cambiar la fuente et al.

Respuesta

156

Sí es posible, usted tiene que definir su propio estilo para los botones de radio, en res/valores/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' aquí debe ser un dibujable estado, 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> 

Luego, simplemente aplique el tema Personalizado a toda la aplicación o a las actividades de su elección.

Para obtener más información sobre temas y estilos, consulte http://brainflush.wordpress.com/2009/03/15/understanding-android-themes-and-styles/ que es una buena guía.

+12

Puede también acaba de establecer el androide: propiedad de los botones en el botón de radio en sí, en lugar de definir un estilo personalizado independiente para ello . –

+6

Es cierto, pero no es una buena práctica, ya que generalmente tiene más de un botón de opción. –

+0

@ KonstantinBurov ¿Qué pasa si estoy usando una imagen de 9 parches? – Hades

28

Puede poner la imagen personalizada en el botón de radio como el botón normal. para que crear un archivo XML en la carpeta dibujable por ejemplo

<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> 

Aquí se puede utilizar 3 imágenes diferentes para el botón de radio

y utilizar este archivo para RadioButton como:

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

Aquí es probablemente una enfoque rápido,

enter image description here

Con dos iconos que se muestran aquí, deberá tener un RadioGroup algo como esto

enter image description here

  • cambio 'orientación s a la horizontal
  • para cada RadioButton' la RadioGroup s Propiedades, trate de darle el icono para Button bajo CompoundButton,
  • ajuste el acolchado y el tamaño,
  • y establece el atributo Fondo cuando está marcado.
7

La manera más fácil sólo para cambiar el botón de opción se fija simplemente selector de la derecha dibujable

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

y el selector es:

<?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> 

Eso es todo

+0

¡La solución más simple! ¡Gracias! – Mangesh

1

sí .. ..` desde XML

android:button="@drawable/yourdrawable" 

y desde Java

myRadioButton.setButtonDrawable(resourceId or Drawable); 

`

Cuestiones relacionadas