简体   繁体   English

如何将单选按钮对齐到相关文本的右侧?

[英]How can I align radio buttons to the right of associated text?

I have the following radio buttons inside a radio group of similar buttons. 我在类似按钮的无线电组内有以下单选按钮。 By default a button is on the left of the associated text. 默认情况下,按钮位于关联文本的左侧。 How do I get the button itself to be on the right of the associated text? 如何让按钮本身位于相关文本的右侧?

<RadioGroup
  android:id="@+id/points_radio_group"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:orientation="vertical" >

  <RadioButton
    android:id="@+id/do_tastk_1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:checked="true"
    android:onClick="doTask1"
    android:paddingLeft="40dip"
    android:text="@string/task_name_1"
    android:textColor="#000000" />

  <RadioButton
    android:id="@+id/do_tastk_2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:checked="true"
    android:onClick="doTask2"
    android:paddingLeft="40dip"
    android:text="@string/task_name_2"
    android:textColor="#000000" />

</RadioGroup>

Use 采用

    android:button="@null"
    android:drawableRight="@android:drawable/btn_radio"

So your code will be like: 所以你的代码就像:

<RadioGroup
  android:id="@+id/points_radio_group"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:orientation="vertical">

  <RadioButton
    android:id="@+id/do_tastk_1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:checked="true"
    android:button="@null"
    android:drawableRight="@android:drawable/btn_radio"
    android:onClick="doTask1"
    android:paddingLeft="40dip"
    android:text="@string/task_name_1"
    android:textColor="#000000" />

  <RadioButton
    android:id="@+id/do_tastk_2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:checked="true"
    android:button="@null"
    android:drawableRight="@android:drawable/btn_radio"
    android:onClick="doTask2"
    android:paddingLeft="40dip"
    android:text="@string/task_name_2"
    android:textColor="#000000" />

</RadioGroup>

by using 通过使用

android:button="@null"
android:drawableRight="@android:drawable/btn_radio"

you change radio button format. 你改变单选按钮格式。 It is better practice just to align right, 最好的做法就是正确对齐,

android:layoutDirection="rtl"

on each radioButton, and text will be on left side. 在每个radioButton上,文本将在左侧。

You can do in xml 你可以用xml做

<android.support.v7.widget.AppCompatRadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right|center" //or "center_vertical" for center text
android:layoutDirection="rtl"
android:text="hello" />

Following line is enough 以下行就足够了

android:layoutDirection="rtl"

If you plan to add elements dynamically you can try to create a layout with a textview and a radio button with no text on the right. 如果您计划动态添加元素,可以尝试使用textview和右侧没有文本的单选按钮创建布局。 Something on these lines: 这些方面的东西:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<RadioButton
    android:id="@+id/radiobutton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"/>

<TextView
    android:id="@+id/textview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/radiobutton"
    android:layout_alignBottom="@+id/radiobutton"
    android:layout_alignParentLeft="true">

简单的方法是将它添加到xml的radiobutton中

android:layoutDirection="rtl"

A much simpler solution, as I posted here is to use the built in Android layout - android.R.layout.simple_list_item_single_choice . 一个更简单的解决方案,我在这里发布的是使用内置的Android布局 - android.R.layout.simple_list_item_single_choice

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2008 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<CheckedTextView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/listPreferredItemHeightSmall"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:checkMark="?android:attr/listChoiceIndicatorSingle"
    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" />

If you want to modify it, you can copy-paste the above into a new XML file, and then use the <include> tag to include it in your other layouts (under the Apache 2.0 License ). 如果要修改它,可以将上述内容复制粘贴到新的XML文件中,然后使用<include>标记将其包含在其他布局中(在Apache 2.0许可证下 )。 You can also use it as a list item, and leave it unchanged. 您也可以将其用作列表项,并保持不变。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM