在 Android 上禁用自动布局更改

IT小君   2022-01-12T05:39:36

我已经制作了一个应用程序,我已经对其进行了测试,并且在我的手机上很好。但是...当我将 .apk 提供给电话语言为 RTL 的其他人时,整个布局都崩溃了,一切都搞砸了。

我的问题是 - 如何强制我的应用程序仅使用 LTR 并禁用破坏我整个应用程序设计的自动布局更改?

评论(4)
IT小君

在您的清单文件和应用程序标记内添加这两行。

<manifest>
    <application
        .
        .
        .
        android:supportsRtl="false"
        tools:replace="android:supportsRtl" //(replace libraries' Rtl support with ours)
        >
    </application>
</manifest>

注意:(关于第二行)一些库在它们的清单文件中支持 Rtl,所以如果你想使用这些库,你必须用你的替换它们的清单代码行。

2022-01-12T05:39:36   回复
IT小君

Android 4.2 添加了对 RTL 布局的完整原生支持。要利用 RTL 布局镜像,只需对您的应用程序进行以下更改:

  • 在您的应用清单中声明您的应用支持 RTL 镜像。具体来说,添加android:supportsRtl="true"到清单文件中的元素。

  • 将应用的所有“左/右”布局属性更改为新的“开始/结束”等效项。如果您将应用程序定位到 Android 4.2(应用程序的 targetSdkVersion 或 minSdkVersion 为 17 或更高版本),那么您应该使用“start”和“end”而不是“left”和“right”。例如,android:paddingLeft应该成为android:paddingStart. 如果您希望您的应用程序使用低于 Android 4.2 的版本(应用程序的 targetSdkVersion 或 minSdkVersion 为 16 或更低),那么您应该在“left”和“right”之外添加“start”和 end”。例如,您将同时使用android:paddingLeftandroid:paddingStart

为了在 LTR 和 RTL 模式下更精确地控制您的应用 UI,Android 4.2 包含以下新 API 来帮助管理 View 组件:

  • android:layoutDirection — 用于设置组件布局方向的属性。
  • android:textDirection — 用于设置组件文本方向的属性。
  • android:textAlignment — 用于设置组件文本对齐方式的属性。
  • getLayoutDirectionFromLocale() — 获取区域指定方向的方法

--来源与学分--

2022-01-12T05:39:36   回复
IT小君

只需将以下内容添加到清单中

android:supportsRtl="false"
tools:replace="android:supportsRtl"
2022-01-12T05:39:36   回复
IT小君

只需在您的应用主题样式中添加类似这样的内容:

<item name="android:layoutDirection">ltr</item>
or
<item name="android:layoutDirection">rtl</item>
2022-01-12T05:39:36   回复