2012-04-11 19 views
5

Ho due pulsanti di opzione in un gruppo radio. Ho anche 2 casella di controllo di androd: button per quando il pulsante radio è deselezionato e checkbox_v per quando l'utente seleziona la casella di controllo. Ho anche implementato il metodo onRadioButtonClick per assicurarmi che fosse possibile disegnare un solo pulsante di opzione: checkbox e l'altro ha checkbox_v. Come posso implementare su RadioClick per fare questo? qualche idea?È selezionato un solo pulsante di opzione alla volta

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 principale

<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

cosa hai provato? incolla il tuo codice qui –

+0

fatto. codice aggiunto – user182192

risposta

13

Se sono in una RadioGroup, solo uno può essere selezionato per volta. Se vuoi che siano entrambi selezionabili, rimuovili dal gruppo radiografico.

+10

errato. Sto personalizzando il pulsante di opzione con il mio drawable drawable checkbox e drawable/checkbox_v invece di quello standard. Attualmente posso selezionare entrambi i pulsanti di selezione e entrambi impostano l'immagine che può essere disegnata/checkbox_v – user182192

0

Il tuo requisito non è chiaro. Ti dispiacerebbe renderlo più semplice. Ho fatto del mio meglio per comprendere le tue esigenze e questi sono i risultati riportati di seguito :(.

Un pulsante di opzione può avere testo. Quindi non devi aggiungere un altro TextView nel tuo layout. Rimuovili e aggiungi un semplice android:text="blah.. blah.." al vostro radiobutton.

con la mia comprensione si hanno due dubbi.

come personalizzare RadioButtons con drawable personalizzati ??

Acquista la risposta here.

Come deselezionare il radiobutton selezionato in precedenza ??

La verità è che non è necessario farlo manualmente poiché si mantengono tali pulsanti in un singolo radiogruppo.

Spero che questo ti possa aiutare.

0

Per controllare/deselezionare pulsanti di opzione non fa parte di un RadioGroup, aggiungiamo un metodo nella finestra di progettazione grafica di Android sotto la RadioButton Proprietà 'onclick' (in questo esempio radio1_onClick).

Nella tua activity.xml sotto l'XML per il RadioButton

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

Nella tua activity_main.xml si può scrivere il seguente metodo.

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

Come la risposta votata in alto non ha funzionato per me come per molti altri. Sto condividendo il metodo che ho usato e il suo funzionamento perfettamente.

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

Impostazione del android:checkedButton="@+id/rb_female" lavorato per me in RadioGroup.

Problemi correlati