2012-04-11 19 views
5

Tengo dos botones de opción en un grupo de radio. También tengo 2 androd: botón checkbox- para cuando el botón de radio no está seleccionado y checkbox_v para cuando el usuario selecciona la casilla de verificación. También implementé un método onRadioButtonClick para asegurarme de que solo un botón de radio tenía una casilla de verificación drawable y el otro checkbox_v. ¿Cómo puedo implementar onRadioClick para hacer esto? ¿alguna idea?Solo un botón de opción seleccionado a la vez

public void onRadioButtonClick(View v) 
{ 
    RadioButton button = (RadioButton) v; 
    boolean checkBox1Selected; 
    boolean checkBox2Selected = false; 

    Toast.makeText(MainActivity.this, 
     button.getId()+ " was chosen."+R.id.wificheckBox, 
     Toast.LENGTH_SHORT).show(); 

    if (button.getId() ==R.id.wificheckBox) { 
     // Toggle status of checkbox selection 
     checkBox1Selected = radiowifiButton.isChecked(); 

     // Ensure that other checkboxes are not selected 
     if (checkBox2Selected) { 
      radiomobileButton.setChecked(false); 
      checkBox2Selected = false; 
     } 
     else if (button.getId() ==R.id.wifimobilecheckBox) { 
      // Toggle status of checkbox selection 
      checkBox2Selected = radiomobileButton.isChecked(); 
      // Ensure that other checkboxes are not selected 
      if (checkBox1Selected) { 
       radiowifiButton.setChecked(false); 
       checkBox1Selected = false; 
      } 
     } 
    } 

XML principal

<RadioGroup 
    android:id="@+id/radioGroup" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/ll_1" 
    android:layout_marginLeft="20dp"> 

<LinearLayout 
    android:id="@+id/ll_2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/ll_1" 
    android:layout_marginLeft="20dp" 
    android:orientation="horizontal" > 

    <RadioButton 
     android:id="@+id/wifimobilecheckBox" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:button="@drawable/button_radio" 
     android:checked="true" 
     android:onClick="onRadioButtonClick" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/wificheckBox" 
     android:layout_toRightOf="@+id/wificheckBox" 
     android:paddingLeft="15dp" 
     android:text="WiFi or mobile network" 
     android:textColor="#333333" 
     android:textSize="20dp" /> 
</LinearLayout> 

<LinearLayout 
    android:id="@+id/ll_3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/ll_2" 
    android:paddingTop="20dp" 
    android:layout_marginLeft="20dp" 
    android:orientation="horizontal" > 

    <RadioButton 
     android:id="@+id/wificheckBox" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:button="@drawable/button_radio" 

     android:onClick="onRadioButtonClick" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/wificheckBox" 
     android:layout_toRightOf="@+id/wificheckBox" 
     android:paddingLeft="15dp" 
     android:text="WiFi " 
     android:textColor="#333333" 
     android:textSize="20dp" /> 
</LinearLayout> 

</RadioGroup> 

Drawabe- button_radio

<item android:state_checked="true"android:state_pressed="false" android:drawable="@drawable/checkbox_v"/><item android:state_checked="false"android:state_pressed="false"'android:drawable="@drawable/checkbox"/> 
+0

¿qué has probado? pegue su código aquí –

+0

hecho. código agregado – user182192

Respuesta

13

Si están en un radiogroup, sólo uno puede ser seleccionado a la vez. Si desea que ambos puedan ser seleccionados, elimínelos del grupo de radio.

+10

Incorrecto. Estoy personalizando el botón de radio con mi propio drawable/checkbox y drawable/checkbox_v en lugar del estándar. Actualmente puedo seleccionar ambos botones de radio y los dos están configurando la imagen dibujable/checkbox_v – user182192

0

Su requisito no esta claro. ¿Te importaría hacerlo más simple? Hice mi mejor esfuerzo para comprender sus requisitos y estos son los resultados que figuran a continuación :(.

Un botón de opción puede tener texto. Por lo tanto, no tiene que agregar otro TextView en su diseño. Elimínelos y agregue un simple android:text="blah.. blah.." a su botón de radio.

con mi comprensión que tiene dos dudas.

cómo personalizar RadioButtons con dibujables personalizados ??

Pedido here la respuesta.

¿Cómo anular la selección del botón de radio previamente seleccionado?

La verdad es que no tiene que hacerlo manualmente ya que mantiene esos botones de radio en un solo grupo de radio.

Espero que esto te ayude.

0

Para comprobar/desactive los botones de radio no es parte de un RadioGroup, añadir un método en el diseñador de interfaz gráfica de usuario de Android bajo la RadioButton Properties 'onClick' (En este ejemplo radio1_onClick).

En su activity.xml bajo el XML para el RadioButton

RadioButton 
    [blah blah blah] 
    android:id="@+id/radio1" 
    android:onClick="radio1_onClick" 

En su activity_main.xml que iba a escribir el siguiente método.

private void radio1_onClick(View v) 
{ 
    CompoundButton b=(CompoundButton)findViewById(R.id.radio1); 
    b.setChecked(true); /* light the button */ 

    //b.setChecked(false); /* unlight the button */ 
} 
3

Como la respuesta más votado no funcionó tanto para mí como para muchos otros. Estoy compartiendo el método que usé y está funcionando perfectamente.

<RadioGroup 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:checkedButton="@+id/rb_female" 
      android:orientation="horizontal"> 

      <RadioButton 
       android:id="@+id/rb_female" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginEnd="10dp" 
       android:layout_marginRight="10dp" 
       android:button="@drawable/selector_radio_button" 
       android:text="Female" /> 

      <RadioButton 
       android:id="@+id/rb_male" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:button="@drawable/selector_radio_button" 
       android:text="Male" /> 
</RadioGroup> 

Ajuste del android:checkedButton="@+id/rb_female" trabajó para mí en RadioGroup.

Cuestiones relacionadas