Radiobutton с текстом над кнопкой

Я новичок в android, и мне нужно добавить переключатели в мою деятельность, но мне нужно поместить текст на кнопку "кому".

любая помощь, пожалуйста. Я нашел следующее, хотя я не понимаю, что такое @drawable/main_selector и @style / TabStyle.

Radiobutton с текстом сверху

может ли кто-нибудь дать мне руководство 101.

обновление

я использовал следующее согласно некоторому предложению но не получилось:

<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<RadioButton
    android:text="something that is on top"
    android:id="@+id/toggle_tab_left"
    android:button="?android:attr/listChoiceIndicatorSingle"        
    style="@null"/>

<RadioButton 
    android:button="?android:attr/listChoiceIndicatorSingle"
    android:text="something that is on top"
    android:id="@+id/toggle_tab_right"
    style="@null"/>
</RadioGroup>

обновление 2

Я получил свое решение от Warpzit, но прежде чем я отмечу вопрос как ответ, может кто-нибудь помочь мне в вопросе выравнивания ниже. У меня будет 5 кнопок в ряд, где некоторые из них будут иметь более длинный текст разбить на 2 строки. когда текст помещается на экране, из-за ландшафта, или на таблетках весь текст должен быть в одну строку:

enter image description here

обновление 3

... в зависимости от размера экрана текст может разделяться на разное количество строк. Это не всегда будет стандарт

enter image description here

3 ответов


на @style/TabStyle - это просто стиль, который применяется, вы можете игнорировать это. The @drawable/main_selector - это графика, которая переключается в зависимости от ситуации. Вы можете узнать больше о селекторах здесь.

пример для получения текста сверху:

<?xml version="1.0" encoding="utf-8"?>
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<RadioButton
    android:text="Text on top"
    android:button="@null"
    android:background="#f00"
    android:layout_weight="1"/>

<RadioButton 
    android:text="Text on top"
    android:button="@null"
    android:background="#0f0"
    android:layout_weight="1"/>
</RadioGroup>

даст следующий результат:

Behind, text on top example

если вы хотите, чтобы текст выше кнопка вы можете использовать следующий xml:

<?xml version="1.0" encoding="utf-8"?>
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<RadioButton
    android:text="Text on top"
    android:button="@null"
    android:drawableBottom="@android:drawable/btn_radio"
    android:gravity="center"
    android:layout_weight="1"/>

<RadioButton
    android:text="Text on top"
    android:button="@null"
    android:drawableBottom="@android:drawable/btn_radio"
    android:gravity="center"
    android:layout_weight="1"/>
</RadioGroup>

это дают следующий результат:

Above example


дополнить Warpzit отличный ответ, вы должны использовать android:gravity="center_horizontal|bottom" и android:layout_height="match_parent" на кнопках, чтобы выровнять их.

также нет необходимости копировать переключатели из AOSP, используйте ?android:attr/listChoiceIndicatorSingle.

Screenshot

XML Layout

<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/radioGroup1"
    android:layout_width="400dp"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="20dp" >

    <RadioButton
        android:id="@+id/radio0"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:button="@null"
        android:drawableBottom="?android:attr/listChoiceIndicatorSingle"
        android:gravity="center_horizontal|bottom"
        android:text="RadioButton" />

    <RadioButton
        android:id="@+id/radio1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:button="@null"
        android:drawableBottom="?android:attr/listChoiceIndicatorSingle"
        android:gravity="center_horizontal|bottom"
        android:text="RadioButton dsfsdfsdfsdfsdf" />

    <RadioButton
        android:id="@+id/radio2"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:button="@null"
        android:drawableBottom="?android:attr/listChoiceIndicatorSingle"
        android:gravity="center_horizontal|bottom"
        android:text="RadioButton fdsfsd fdsfsdf fsfsdfs" />

</RadioGroup>

хороший способ сделать этот эффект прост в применении-использовать стиль. Для этого поместите этот код на свой styles.xml, под resources - тег.

<style name="RadioWithTextOnTop">
    <item name="android:button">@null</item>
    <item name="android:drawableBottom">?android:attr/listChoiceIndicatorSingle</item>
    <item name="android:gravity">center_horizontal|bottom</item>
</style>

а затем примените его к вашему RadioButton следующим образом:

<RadioButton
    style="@style/RadioWithTextOnTop"
    android:id="@+id/radioButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="RadioButton" />