2012-04-11 22 views
5

Mam dwa przyciski radiowe w grupie radiowej. Mam również 2 pole wyboru androd: button - dla kiedy przycisk radio jest odznaczony i checkbox_v dla kiedy użytkownik zaznaczy to pole wyboru. Wprowadziłem również w życie metodę onRadioButtonClick w celu upewnienia się, że tylko jeden przycisk opcji ma możliwość losowania: pole wyboru, a drugie ma pole wyboru checkbox_v. Jak mogę wdrożyć OnRadioClick, aby to zrobić? dowolny pomysł?Tylko jeden przycisk radiowy wybrany na raz

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

główny xml

<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

co próbowałeś? wklej kod tutaj –

+0

zrobione. dodano kod – user182192

Odpowiedz

13

Jeśli są one w radiogroup, tylko jeden może być wybrany na raz. Jeśli chcesz, aby obie mogły być wybrane, usuń je z grupy radiologicznej.

+10

Niepoprawnie. Dostosowuję przycisk radiowy za pomocą własnego losowania do rysowania/pola wyboru i losowania/checkbox_v zamiast standardowego. Obecnie mogę wybrać oba przyciski radiowe i oba ustawiają obraz do przeciągnięcia/checkbox_v – user182192

0

Twoje wymagania nie są jasne. Czy mógłbyś to uprościć? Postarałem się jak najlepiej zrozumieć twoje wymagania i są to ustalenia podane poniżej :(

Przycisk radiowy może zawierać tekst, więc nie musisz dodawać kolejnego TextView w swoim układzie. Usuń je i dodaj prosty android:text="blah.. blah.." do radiobutton.

z mojego zrozumienia masz dwie wątpliwości.

Jak dostosować radiobuttons z niestandardowych kanału alfa ??

Checkout odpowiedź here.

Jak odznaczyć poprzednio wybrane radio?

Prawda jest taka, że ​​nie trzeba tego robić ręcznie, ponieważ radiobudziki są przechowywane w jednej grupie.

Mam nadzieję, że to ci pomoże.

0

Aby zaznaczyć/odznaczyć przycisków radiowych nie jest częścią radiogroup, dodać metodę w android projektant GUI pod Radiobutton Właściwości „onClick” (w tym przykładzie radio1_onClick).

W swojej activity.xml pod xml dla RadioButton

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

W swojej activity_main.xml byś napisać następujący sposób.

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

Jako górna głosowana odpowiedź nie działa dla mnie tak jak dla wielu innych. Dzielę się metodą, której użyłem i która działa doskonale.

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

Ustawianie android:checkedButton="@+id/rb_female" pracował dla mnie w RadioGroup.

Powiązane problemy