Текстовая левая сторона RadioButton с запасом на Android

Я хочу иметь "метку", - текст, который вы установили в своем RadioButton, чтобы показывать слева от кнопки и иметь промежуток между ними.

Добавление дополнительного макета TextView в макет не работает, потому что мой RadioGroup не работает (я могу выбрать несколько кнопок), если я добавлю что-нибудь другое, а затем RadioButton в RadioGroup.

Итак, как я могу изменить RadioButton как <text><buttondrawable> вместо <buttondrawable><text>

Ответ 1

Вы можете достичь этого, установив android:button="@null" и добавив drawable из RadioButton как android:drawableRight. Вы можете изменить прописку между текстом и рисующим с помощью android:drawablePadding.

    <RadioGroup
        android:id="@+id/radios"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:inputType="text"
        android:orientation="vertical" >

        <RadioButton
            android:id="@+id/first"
            android:button="@null"
            android:drawableRight="@android:drawable/btn_radio"
            android:drawablePadding="20dp"
            android:layout_width="200dip"
            android:layout_height="wrap_content"
            android:text="@string/first"
            android:textSize="20dip" />

        <RadioButton
            android:id="@+id/second"
            android:button="@null"
            android:drawableRight="@android:drawable/btn_radio"
            android:drawablePadding="20dp"
            android:layout_width="200dip"
            android:layout_height="wrap_content"
            android:text="@string/second"
            android:textSize="20dip" />
    </RadioGroup>
</RelativeLayout>

Ответ 2

В приведенном выше ответе изображение не имеет выбранного состояния.

Помогите вам:

  • В API <= 16 вы можете установить прописку слева на переключателе, чтобы установить дополнение по отношению к границам просмотра радиокнопок. Кроме того, патч девять фона также изменяет границы представления относительно представления.

  • В интерфейсе API 17 левое заполнение относится к переключателю радиоприемника. То же самое касается девятого патча. Чтобы лучше проиллюстрировать различия в отступлении, см. Прикрепленный снимок экрана.

Если вы копаете код, вы найдете новый метод в api 17, называемый getHorizontalOffsetForDrawables. Этот метод вызывается при вычислении левого заполнения для переключателя (следовательно, дополнительное пространство, показанное на рисунке).

TL; DR У вас должен быть стиль радио кнопки для поддерживаемого вами min sdk и другого стиля для api 17 +

ответ от этого же вопроса ответил @James Baca