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

标签 java android xml

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

最佳答案

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

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

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

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

更新

我决定更新此内​​容以供将来引用,因为评论中的声明是错误的,并且即使问题指出“没有在 LinearLayout 中对齐 Switch 和 TextView”,该答案也“不接受”,而当前接受的答案确实如此.

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

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

测试

  1. 将小部件布局方向设置为“RTL”
  2. 运行应用
  3. 转至“设置”>“开发者选项”>“强制 RTL 布局方向”
  4. 观察布局

所有其他小部件的方向将翻转为“RTL”,因为默认情况下它们位于“LTR”,并且 Switch 不会发生任何情况,因为它已经处于正确的配置中。检查下面的图像。

布局方向“LTR”默认

enter image description here

布局方向“RTL”

enter image description here

关于java - 如何设置开关右侧的文本位置(如复选框),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45983522/

相关文章:

android - java.util.zip.ZipException : duplicate entry during packageAllDebugClassesForMultiDex

java - 如何使用 javax.xml.stream 接口(interface) XMLStreamWriter 接口(interface)写入 boolean 值

javascript - 想在html中的div中显示xml文件数据

java - Android Studio : SQLite Database Query for getting closest location from coordinates

java - Android单元测试onclick方法

java - CXF 在单元测试中因 IncompatibleClassChangeError 异常而失败

java - 如何为 RibbonApplicationMenu 添加图标?

android - 联想设备中 RTL 语言的 EditText.setText() 方法中的奇怪错误

java - 释放 Android 5 上使用的 ImageView 的内存

java - Android:修改Listview上的项目