Java 如何设置开关右侧的文本位置(如复选框)

Java 如何设置开关右侧的文本位置(如复选框),java,android,xml,Java,Android,Xml,如何在不对齐线性布局中的开关和文本视图的情况下设置开关右侧的文本位置?我试图覆盖style.xml按钮中的复选框按钮样式,但我不知道如何获取开关按钮引用 有两种方式,但由于不建议使用负片填充,因此第二种方式是 =>使用单独的文本视图 <LinearLayout android:layout_width="match_parent" android:orientation="horizontal" and

如何在不对齐线性布局中的开关和文本视图的情况下设置开关右侧的文本位置?我试图覆盖style.xml按钮中的复选框按钮样式,但我不知道如何获取开关按钮引用

有两种方式,但由于不建议使用负片填充,因此第二种方式是

=>使用单独的文本视图

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

编辑-除了使用负片填充、父布局或任何自定义库之外,没有直接的方法。 请参阅和。

忘记这一点,使用它。

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

我发现,通过在开关中添加
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" />


使现代化 我决定更新此内容以备将来参考,因为评论中的声明是错误的,op“不接受”此答案,即使问题状态为“未对齐线性布局中的开关和文本视图”,而当前接受的答案是这样的

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

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

测试

  • 将小部件布局方向设置为“RTL”
  • 运行应用程序
  • 转到设置>开发人员选项>强制RTL布局方向
  • 注意布局
  • 所有其他窗口小部件的方向将翻转为“RTL”,默认情况下它们位于“LTR”上,并且交换机不会发生任何事情,因为它已经处于正确的配置中。检查下面的图片

    布局方向“LTR”默认值

    布局方向“RTL”


    尝试设置
    android:gravity=“RIGHT”
    属性。@TasosMoustakas不,它不起作用。谢谢你的回答,但这正是我不想做的。这会不会导致RTL布局出现问题,不过?这也反映了导致用户体验问题的开关本身。@Dogcat在否决我的答案之前,你读过op问题了吗?当您更改布局方向时,它显然会更改开关方向。这是一个多方面的解决方案,由于op没有提供所需UI的需求,它多次解决了他的问题,就像我的问题一样。如果您正在寻找适合您的UI/UX的特定解决方案,您应该发布自己的问题或尝试按照下面的答案进行操作。是的,我有,您的解决方案超出了OP的要求。我想说的是,使用“rtl”不仅会改变文本对齐方式,还会翻转开关drawable自身:它会变成“不活动时在右侧圆圈,活动时在左侧圆圈”。这确实是一个UI/UX问题,它只会让你的用户感到困惑,因为在几乎所有其他应用程序中,LTR拼写系统也是如此。这就是为什么被称为“layoutDirection”,它显然会颠覆一切。您犯的错误是假设所有UI/UX需求完全相同,这是完全错误的。即使是材料设计指南也只是一个指南,即使谷歌本身也没有一直遵循。所以在现实世界中,一个开关将在不同的情况下使用,与其他小部件分组或单独使用,这就是为什么这个解决方案对op有效,并且多次对我有效。