如何在 Android MaterialButtonToggleGroup 中获取选中的按钮位置

How to get checked button position in Android MaterialButtonToggleGroup

我在我的 xml 中定义了一个 MaterialButtonToggleGroup 和 2 MaterialButton,这样:

<com.google.android.material.button.MaterialButtonToggleGroup
    ...
    app:checkedButton="@+id/favorite_color1"
    app:singleSelection="true">

    <com.google.android.material.button.MaterialButton
        android:id="@+id/favorite_color1"
        ... />

    <com.google.android.material.button.MaterialButton
        android:id="@+id/favorite_color2"
        ... />

</com.google.android.material.button.MaterialButtonToggleGroup>

我找到了 getCheckedButtonIds() 方法(returns 一个 ID 列表)和 OnButtonCheckedListener(returns 一个整数 ID),但是 get(int index) method returns索引位置的View,不是某个id的View。

如何(以编程方式)在给定时刻获取选中按钮的视图? 有一种方法returns当前检查的位置(或索引)?

由于您使用的是 app:singleSelection="true",因此您可以使用 getCheckedButtonId() 方法获取该组中所选 MaterialButton 的唯一 ID。
您可以使用类似的东西:

MaterialButtonToggleGroup materialButtonToggleGroup = 
         findViewById(R.id.toggle_button_group);
int buttonId = materialButtonToggleGroup.getCheckedButtonId();
MaterialButton button = materialButtonToggleGroup.findViewById(buttonId);

您也可以使用 getCheckedButtonIds() 并循环访问 ID。

List<Integer> ids = materialButtonToggleGroup.getCheckedButtonIds();
for (Integer id:ids){
      MaterialButton materialButton = materialButtonToggleGroup.findViewById(id);
      //....
}