15

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

请提供任何帮助。我发现了以下内容,虽然我不明白@drawable/main_selector 和@style/TabStyle 是什么。

顶部带有文本的单选按钮

谁能给我一个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 行。当文本适合屏幕时,由于横向或平板电脑,那么所有文本都应该在一行中:

在此处输入图像描述

更新 3

...根据屏幕大小,文本可以分成不同的行数。它不会总是标准的

在此处输入图像描述

4

4 回答 4

32

@style/TabStyle只是一种应用的样式,您可以忽略它。这@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>

将给出以下结果:

后面,顶部示例上的文本

如果您希望文本出现在按钮上方,您可以使用以下 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>

这将给出以下结果:

上面的例子

于 2013-09-30T20:11:32.847 回答
25

为了补充Warpzit 的好答案,您应该在按钮上使用android:gravity="center_horizontal|bottom"android:layout_height="match_parent"来对齐它们。

此外,无需从 AOSP 复制单选按钮可绘制对象,使用?android:attr/listChoiceIndicatorSingle.

截屏

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>
于 2014-05-03T09:10:47.247 回答
2

使此效果易于应用的一个好方法是使用样式。为此,请将此代码放在标签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" />
于 2018-09-10T14:52:00.703 回答
0

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

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

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

于 2019-08-24T13:14:56.853 回答