2010-07-26 28 views
5

Agrego un RadioButton en mi diseño.Botón de radio no alternar su estado

No está seleccionado para comenzar. Y cuando hago clic en él, se comprueba (como se muestra en el emulador). ¿Pero cuando vuelvo a hacer clic en él, no se desactiva nuevamente?

<RadioButton android:checked="false" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/option1"/> 
+3

Pero así es como * se supone que * un botón de radio funciona. –

Respuesta

3

Si solo está utilizando una radiocasetera para el encendido y apagado, tal vez debería usar la casilla de verificación o el botón de alternar.

http://developer.android.com/resources/tutorials/views/hello-formstuff.html

de desplazamiento hacia abajo y ver casilla de verificación y botón de alternar.

Al usar radios, generalmente tiene más de una y elige entre ellas. Como fácil, medio, difícil.

+0

¿cómo puedo especificar 'checkboxStyle' en mi propio control? – michael

1

Esa es una pregunta conceptual: los botones de opción le permiten elegir entre varias opciones (representadas por los otros botones de opción). Normalmente, un botón de opción de un grupo siempre se comprueba, incluso si en un estado inicial no se pueden marcar botones si no declara uno como valor predeterminado. Eso significa también que un solo botón no permite alternar su estado a menos que haya otros botones de radio en el mismo grupo; si solo hay una opción, deberá elegirla.

Si desea una palanca binaria, querrá utilizar una casilla de verificación en su lugar.

3

Si tiene más de 1 botones de selección para trabajar luego añadir "RadioGroups" de la siguiente manera:

<RadioGroup android:id="@+id/group1" android:layout_width="fill_parent" 
     android:layout_height="wrap_content" android:orientation="vertical"> 
     <RadioButton android:id="@+id/radio1" android:text="madras" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" /> 
     <RadioButton android:id="@+id/radio2" android:text="bombay" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" /> 
    </RadioGroup> 

Tener un vistazo a este example, estoy seguro de que esto hará que su idea clara con respecto a Radio Botones.

Consulte también Android Developer - Form Stuff page.

1

solución se ajusta comprobado [verdadero/falso] intermedio en código Java

ToggleButton t = (ToggleButton) findViewById(R.id.toggle_button); 
t.setChecked(true); 
// t.setChecked(false); 
3

Si usted está buscando el comportamiento casilla de verificación con la apariencia del botón de radio, que podría pasar en el estilo XML a una casilla de verificación.

<CheckBox android:checked="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/option1" 
     style="@android:style/Widget.DeviceDefault.Light.CompoundButton.RadioButton/> 

Esto puede ser útil en algunos casos (ej. Usando los botones de opción en un RecyclerView), pero hay que tener cuidado ya que el usuario espera botones de radio que se comporten de una manera determinada. Si le permite al usuario hacer selecciones múltiples, probablemente debería usar una casilla de verificación normal, como se menciona en los comentarios anteriores.

Espero que esto ayude!

1

Después de buscar mucho en SO, se me ocurrió una solución no tan buena pero decente.

Declare una variable boolean para cada RadioButton que tenga, inicialícela con false, y cambie el estado de la variable y el RadioButton con cada clic.

boolean isToggledRadio1 = false; 
RadioButton radio1 = (RadioButton) findViewById(R.id.radiobutton1); 
radio1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     isToggledRadio1 = !isToggledRadio1; //Switch boolean value 
     RadioButton rb = (RadioButton)v; 
     rb.setChecked(isToggledRadio1); 
    } 
}); 

  1. sé que es ideal para utilizar una casilla de verificación, pero si alguien necesita el botón de radio, entonces tienen el botón de radio.

  2. Esto no es una solución óptima, ya que, básicamente, mueva el botón dos veces cada vez que el usuario hace clic en el botón (uno es el comportamiento por defecto, la segunda vez que está dentro de su función onclick), así que si' Si usa OnCheckedChangeListener, probablemente reciba dos llamadas por el mismo clic.

  3. Hay otra solución, que es cambiar el android:button en una casilla de verificación a otro dibujable con una plantilla xml, pero es un poco más complejo, requiere al menos 2 archivos más para los estados.

+1

Funciona para mí. Gracias – Vrajesh

Cuestiones relacionadas