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?
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 .. }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With