Поместите текст переключателя внутри него - PullRequest
1 голос
/ 13 февраля 2020

Как разместить текст переключателя внутри него?

Мотивация:

Я создал меню под «жестким кодированием», обрабатывая все необходимые ситуации вручную, например, когда выбрана одна кнопка, все остальные кнопки должны быть не выбраны.

enter image description here

Однако кода было много, и эта функциональность именно то, что уже предоставляют радиогруппы и радиокнопки, за исключением вопроса этого вопроса: текст радиокнопки находится вне кнопки.

Во время некоторых тестов я закончил с кодом ниже :

<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<RadioButton
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:button="@drawable/group_button"
  android:text="@string/char_A"
  />

Ширина свойства button Мне удалось изменить стиль переключателя, а также свойство text I достичь этого результата уже:

enter image description here

Но последнее задание, которое я считал самым простым, я пока не смог достичь.

Я попытался взломать источник RadioButton на Android, чтобы найти некоторые метод, который я мог бы переопределить, чтобы заменить это поведение, но я оказался в классе с 13K строками кода, и я не думаю, что смогу обнаружить, как это работает так скоро.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Вы можете использовать ChipGroup для достижения желаемого эффекта:

<com.google.android.material.chip.ChipGroup
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:selectionRequired="true"
    app:checkedChip="@+id/default_chip"
    app:singleSelection="true">
    <com.google.android.material.chip.Chip
        android:id="@+id/default_chip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:checkedIconVisible="false"
        android:checkable="true"
        android:text="A"/>
    <com.google.android.material.chip.Chip
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:checkedIconVisible="false"
        android:checkable="true"
        android:text="B"/>
    <com.google.android.material.chip.Chip
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:checkedIconVisible="false"
        android:checkable="true"
        android:text="C"/>
</com.google.android.material.chip.ChipGroup>

См. Также ссылку для ChipGroup , а также страницы дизайна материалов для Чипсы

0 голосов
/ 13 февраля 2020

Просто установите фон радиокнопки для изображения или текста этих алфавитов, а затем обработайте эти события в радиокнопке onClick ().

                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:checked="true"
                    android:textSize="17sp"
                    android:onClick="onRadioClick"
                    android:textAppearance="@style/RobotoTextViewStyle"
                    android:background="@color/amber"/>

Вместо цвета добавьте нарисованное алфавитом изображение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...