如何在右侧显示android复选框?

UMA*_*MAR 131 checkbox layout android

默认情况下,android复选框显示右侧的文本和左侧的复选框
我想在右侧显示复选框,左侧显示文本

我怎么做到这一点?

Haz*_*hir 344

我认为回答这个问题为时已晚,但实际上有一种方法可以实现你的目标.您只需将以下行添加到您的复选框:

android:button="@null"
android:drawableRight="?android:attr/listChoiceIndicatorMultiple"
Run Code Online (Sandbox Code Playgroud)

您也可以使用自定义的drawable复选框.

而对于radioButton:

android:button="@null"
android:drawableRight="@android:drawable/btn_radio"
Run Code Online (Sandbox Code Playgroud)

如果您想以编程方式执行此操作:

定义布局并将其命名为RightCheckBox并复制以下行:

<?xml version="1.0" encoding="utf-8"?>
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
    android:text="hello"
    android:layout_width="match_parent" 
    android:layout_height="match_parent"
    android:button="@null"
    android:drawableRight="?android:attr/listChoiceIndicatorMultiple"/>
Run Code Online (Sandbox Code Playgroud)

当你需要以编程方式添加它时,你只需要将它膨胀到CheckBox并将其添加到根视图中.

CheckBox cb = (CheckBox)((LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE)).inflate(R.layout.check_right_checkbox,null);
rootView.addView(cb);
Run Code Online (Sandbox Code Playgroud)

  • 请注意,Android 5.0 SDK会向您显示有关RTL设备的警告.为了让它消失,只需添加`android:drawableEnd`以及`android:drawableRight`(具有相同的值). (6认同)
  • 这个解决方案很好地解决了这个问题.然而,在Android 5. +上,虽然标准小部件包含可以绘制到支票周围的小区域的波纹,但是这个修改过的小部件允许波纹扩展到小部件本身的范围之外.如果使用这种技术,我建议设置背景以使用带有矩形蒙版的波纹绘制. (5认同)
  • 对于一个复选框,你可以使用`android:drawableRight ="?android:attr/listChoiceIndicatorMultiple"`.我认为这是迄今为止我找到的右侧复选框的最佳解决方案. (4认同)
  • 它在文本的中心显示圆形波纹,但不在右侧绘制,因此在现代Android版本上看起来很难看 (4认同)
  • Android 提供了十几个视图对象,所有这些对象都可以更改为绘制 android drawable 或自定义 drawable。如果您想要对象上的涟漪效果 (5.0+),只需将其背景设置为启用涟漪的 XML drawable。以下链接显示了几个示例视图对象,CheckedTextView、CheckBox、ToggleButton 等具有正确的 drwable 集。http://landenlabs.com/android/uicomponents/uicomponents.html#checkbox (2认同)

Mah*_*Lad 102

你可以做

<CheckBox
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" />
Run Code Online (Sandbox Code Playgroud)

以下行就足够了

android:layoutDirection="rtl"
Run Code Online (Sandbox Code Playgroud)

  • Hacky和优雅的同时.干杯! (3认同)
  • 这不是正确的方法,因为如果您的设备使用RTL语言,则外观将不正确。 (3认同)
  • 需要设置 `android:gravity="end|center_vertical"` 以使文本显示在左侧,因为布局从现在开始。 (3认同)

The*_*rga 50

您可以添加,android:layoutDirection="rtl"但它仅适用于API 17.


xil*_*il3 41

我想不出样式的方法,但您可以将复选框的文本设置为空,并将TextView放在复选框的左侧,并带有所需的文本.


Ivo*_*nov 19

请复制一下:

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Your text:"/>
        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            />
    </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

快乐的编码!:)


cfh*_*008 13

复选框文本可能未与左对齐

android:button="@null"
android:drawableRight="@android:drawable/btn_radio"
Run Code Online (Sandbox Code Playgroud)

在某些设备中.可以使用CheckedTextView作为替代品以避免此问题,

<CheckedTextView
    ...
    android:checkMark="@android:drawable/btn_radio" />
Run Code Online (Sandbox Code Playgroud)

此链接将有所帮助:左对齐文本,右键对齐


小智 7

    <android.support.v7.widget.AppCompatCheckBox
  android:id="@+id/checkBox"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="10dp"
  android:layoutDirection="rtl"
  android:text="text" />`
Run Code Online (Sandbox Code Playgroud)


Sri*_*nth 5

正如@The Berga所建议的那样,您可以添加,android:layoutDirection="rtl"但仅适用于API17。
用于动态实现,在这里

chkBox.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
Run Code Online (Sandbox Code Playgroud)