如何打开切换按钮之一

How to turn on one of the toggle buttons

我希望另一个切换按钮在打开时关闭。

<item android:state_checked="true"
    android:drawable="@drawable/press"></item>
<item android:drawable="@drawable/nomal"></item>

这是我的切换按钮的 xml 代码此代码是在 'drawable'.

中制作的

您需要使用可绘制对象创建 RadioGroup, and add to it 2 RadioButtons。结帐第二个 link,它将描述如何正确执行此操作。 您还需要更改可绘制对象 xml press to checked

您可以使用下面的选择器作为 ToggleButton 的背景,它会在按钮更改其检查状态时选择适当的可绘制对象

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_checked" android:state_checked="true" />
    <item android:drawable="@drawable/ic_unchecked" android:state_checked="false" />
</selector>

并将两个按钮包裹在 RadioGroup 中;然后每当按钮为 checked/clicked 时循环遍历该组,然后使用 setChecked() 方法否定这些按钮。

布局

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <RadioGroup
        android:id="@+id/toggleGroup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="24dp"
        android:orientation="horizontal">

        <ToggleButton
            android:id="@+id/toggle_btn_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/toggle_btn_selector"
            android:onClick="onToggle"
            android:textOff=""
            android:textOn="" />

        <ToggleButton
            android:id="@+id/toggle_btn_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/toggle_btn_selector"
            android:onClick="onToggle"
            android:textOff=""
            android:textOn="" />
    </RadioGroup>

</LinearLayout>

行为

public class MainActivity extends AppCompatActivity {

    RadioGroup mGroup;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mGroup = findViewById(R.id.toggleGroup);
    }

    public void onToggle(View view) {

        ToggleButton checkedBtn = ((ToggleButton) view);

        for (int j = 0; j < mGroup.getChildCount(); j++) {
            ToggleButton toggleButton = (ToggleButton) mGroup.getChildAt(j);
            int id = toggleButton.getId();
            if (view.getId() == id)
                continue;
            toggleButton.setChecked(!checkedBtn.isChecked());
        }

    }
}