在安卓系统上禁用自动布局更改

2022-09-01 16:55:26

我做了一个应用程序,我已经测试过了,在我的手机上很好。但。。。当我把.apk给手机语言是RTL的其他人时,整个布局都坏了,它搞砸了一切。

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


答案 1

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

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

注意:(关于第二行)某些库在其清单文件中具有支持 Rtl,因此,如果要使用这些库,则必须将其清单代码行替换为您的代码行。


答案 2

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

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

  • 将应用的所有“左/右”布局属性更改为新的“开始/结束”等效项。如果您将应用定位到 Android 4.2(应用的 targetSdkVersion 或 minSdkVersion 为 17 或更高版本),则应使用“开始”和“结束”,而不是“左”和“右”。例如,应变为 。如果您希望您的应用程序适用于Android 4.2之前的版本(该应用程序的targetSdkVersion或minSdkVersion为16或更少),那么除了“左”和“右”之外,您还应该添加“开始”和“结束”。例如,您将同时使用 和 。android:paddingLeftandroid:paddingStartandroid:paddingLeftandroid:paddingStart

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

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

-- 来源和信用 --