单选按钮上面的文本按钮

时间:2013-09-30 19:24:43

标签: android radio-button

我是Android的新手,我需要在我的活动中添加单选按钮,但我需要将文本放在项目符号按钮的上面。

请帮忙。我找到了以下内容,虽然我不明白@ drawable / main_selector和@ style / TabStyle是什么。

Radiobutton with text on top

任何人都可以给我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

4 个答案:

答案 0 :(得分:28)

@style/TabStyle只是一种应用的样式,您可以忽略它。 @drawable/main_selector是根据情况切换的图形。您可以阅读有关选择器here的更多信息。

将文字置于顶部

的示例
<?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

答案 1 :(得分:19)

要补充Warpzit great answer,您应该在按钮上使用android:gravity="center_horizontal|bottom"android:layout_height="match_parent"来对齐它们。

此外,无需从AOSP复制单选按钮drawable,使用?android:attr/listChoiceIndicatorSingle

Screenshot

XML布局

<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>

答案 2 :(得分:1)

使这种效果易于应用的一种好方法是使用样式。为此,请将此代码放在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" />

答案 3 :(得分:0)

我最终使用的最简单的解决方案是:

<RadioButton
    ...
    android:gravity="center_horizontal|bottom"
    android:drawableTop="?android:attr/listChoiceIndicatorSingle"
    android:button="@null"
    />

它还使用了动画图标listChoiceIndicatorSingle的较新样式,这是默认样式。