Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android: How to get a radiogroup with togglebuttons?

I want a group of buttons where a user can choose one of them as option. It has to be a radiobuttongroup like behaviour, but I don't want the radio circle to be present. I just want the user to be able to toggle only one of the buttons.

I think I would need someting like a togglegroup.

Does something like this exist in Android?

like image 540
Peterdk Avatar asked Mar 04 '10 13:03

Peterdk


1 Answers

I'd just re-use the RadioGroup like so: (please note the onClick attribute,i.e. a button click will trigger your Activity's onToggle(View) method.

<RadioGroup android:id="@+id/toggleGroup"             android:layout_width="fill_parent"             android:layout_height="wrap_content"             android:layout_marginTop="24dp"             android:orientation="horizontal"         >      <ToggleButton android:id="@+id/btn_Letter"                   android:layout_height="wrap_content"                   android:layout_width="fill_parent"                   android:layout_weight="1"                   android:textSize="14sp"                   android:textOn="Letter"                   android:textOff="Letter"                   android:onClick="onToggle"                   android:checked="true"             />     <ToggleButton android:id="@+id/btn_A4"                   android:layout_height="wrap_content"                   android:layout_width="fill_parent"                   android:layout_weight="1"                   android:textSize="14sp"                   android:textOn="A4"                   android:textOff="A4"                   android:onClick="onToggle"             /> </RadioGroup> 

In your Activity, or some place else, you can define a listener, e.g.

static final RadioGroup.OnCheckedChangeListener ToggleListener = new RadioGroup.OnCheckedChangeListener() {         @Override         public void onCheckedChanged(final RadioGroup radioGroup, final int i) {             for (int j = 0; j < radioGroup.getChildCount(); j++) {                 final ToggleButton view = (ToggleButton) radioGroup.getChildAt(j);                 view.setChecked(view.getId() == i);             }         }     }; 

and register it, for instance in onCreate():

@Override  public void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      this.setContentView(R.layout.scan_settings);       ((RadioGroup) findViewById(R.id.toggleGroup)).setOnCheckedChangeListener(ToggleListener);      } 

finally in onToggle(View), you would do whatever needs to happen, specific to your app. and also call the RadioGroup's check method, with the toggled view's id. Like so:

public void onToggle(View view) {     ((RadioGroup)view.getParent()).check(view.getId());     // app specific stuff .. } 
like image 154
Wolf Paulus Avatar answered Oct 02 '22 17:10

Wolf Paulus