1

我在我的xml中定义了一个MaterialButtonToggleGroupwith 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()了方法(返回一个 ID 列表)和OnButtonCheckedListener(返回一个整数 ID),但是该get(int index)方法返回索引位置的视图,而不是具有特定 ID 的视图。

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

4

1 回答 1

3

由于您正在使用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);
      //....
}
于 2020-05-29T15:18:29.627 回答