如何在Switch的右侧设置文本位置(如CheckBox)

时间:2017-08-31 14:08:24

标签: java android xml

如何设置开关右侧的文本位置没有在LinearLayout中对齐Switch和TextView?我尝试在style.xml按钮中覆盖CheckBox按钮样式,但我不知道如何获取Switch按钮引用?

2 个答案:

答案 0 :(得分:3)

有两种方法,但不推荐使用负填充,所以第二种方式。

=> 使用单独的文字视图

        <LinearLayout
            android:layout_width="match_parent"
            android:orientation="horizontal"
            android:paddingTop="10dp"
            android:paddingBottom="10dp"
            android:layout_height="wrap_content">
            <Switch
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/switch1" />
            <TextView
                android:layout_width="wrap_content"
                android:text="This is a switch"
                android:layout_height="wrap_content" />
        </LinearLayout>

编辑 - 没有直接的方法,但使用负填充,父布局或任何自定义库。 请参阅herehere  忘记这一点并使用this library

答案 1 :(得分:1)

我最近遇到了同样的问题,因为我不想将我的布局包装在一个额外的容器中,就像我遇到的所有答案一样。

我发现通过在开关中添加android:layoutDirection="rtl",我可以更改文本的方向,因为Android了解该视图应该由从右到左阅读的人读取/使用。

请参阅下面的完整摘录,包括拇指和文字之间的额外填充

<Switch
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:switchPadding="16dp"
    android:layoutDirection="rtl"
    android:text="Your Text" />

更新

我决定更新这个以供将来参考,因为评论中的声明是错误的,即使问题表明“没有在LinearLayout中对齐Switch和TextView”,当前接受的答案也是如此,“ops unaccepted”这个答案

解决方案提供的是告诉特定小部件改变其布局方向,并通过这样做将其从“LTR”(从左到右)翻转到“RTL”(从右到左)。

如果您不愿意嵌套布局,这是一个可行的解决方案。

测试

  1. 将窗口小部件布局方向设置为“RTL”
  2. 运行应用
  3. 转到设置&gt;开发人员选项&gt;强制RTL布局方向
  4. 观察布局
  5. 所有其他小部件的方向将翻转为“RTL”,因为默认情况下它们位于“LTR”,并且Switch不会发生任何事情,因为它已经处于正确的配置中。检查下面的图片。

    布局方向“LTR”默认

    enter image description here

    布局方向“RTL”

    enter image description here