切换按钮与单选按钮行为

时间:2018-09-25 04:47:43

标签: android radio-button togglebutton radio-group android-togglebutton

我在相对布局中有一组切换按钮。

用户一次只能选择一个切换按钮。

我尝试了以下link,但它们似乎都不起作用。

关于如何实现此目标的任何想法?

2 个答案:

答案 0 :(得分:0)

它不起作用可能是因为所有单选按钮没有组合在一起,因为它们之间存在某些视图。

RadioButton应该是RadioGroup的直接子代,否则分组将不起作用。

答案 1 :(得分:0)

  

用户一次只能选择一个切换按钮。

在给定链接的所选answer中可用的代码正在执行相同的工作。为了使之可视化,请更改一些代码。

在XML中

在ToggleButton中,将android:textOnandroid:textOff更改为“ on”和“ off”(例如)。您的XML文件应如下所示:

<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/btn1"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:layout_weight="1"
        android:textSize="14sp"
        android:textOn="on"
        android:textOff="off"
        android:onClick="onToggle"
        android:checked="true"
        />
    <ToggleButton android:id="@+id/btn2"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:layout_weight="1"
        android:textSize="14sp"
        android:textOn="on"
        android:textOff="off"
        android:checked="false"
        android:onClick="onToggle"
        />
</RadioGroup>

这应该看起来像这样:

Screenshot1

在Java文件中

在您的活动中,编写以下代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ((RadioGroup) findViewById(R.id.toggleGroup)).setOnCheckedChangeListener(ToggleListener);
}

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

public void onToggle(View view) {
    ((RadioGroup)view.getParent()).check(view.getId());
    // write your specific code here ..
    Toast.makeText(this, "Toggle button clicked", Toast.LENGTH_SHORT).show();
}

在另一个(切换按钮)为“开”的情况下单击“关”时,“关”将变为“开”,反之亦然。因此,用户一次只能选择一个切换按钮。如果一个切换按钮处于打开状态,则其他切换按钮始终处于关闭状态。