Как проверить позицию кнопки в Android MaterialButtonToggleGroup - PullRequest
1 голос
/ 29 мая 2020

Я определил MaterialButtonToggleGroup с 2 MaterialButton в моем xml следующим образом:

<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() (который возвращает список идентификаторов) и OnButtonCheckedListener (который возвращает целочисленный идентификатор), но метод get(int index) возвращает представление в позиции индекса, а не представление с определенным идентификатором.

Как я могу получить (программно) представление проверенной кнопки в данный момент? Есть метод, возвращающий текущую проверенную позицию (или индекс)?

1 Ответ

2 голосов
/ 29 мая 2020

Поскольку вы используете app:singleSelection="true", вы можете использовать метод getCheckedButtonId(), чтобы получить уникальный идентификатор выбранного MaterialButton в этой группе.
Вы можете использовать что-то вроде:

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

Вы также можете использовать getCheckedButtonIds() и циклически перебирать идентификаторы.

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