强制一种构建风味 RTL,一种构建风味 LTR

Force one build flavor RTL, and one build flavor LTR

我有一个具有 2 种构建风格的应用程序,"Israel" 和 "France"。 我想在不考虑设备语言的情况下,针对每种构建风格强制布局方向,让以色列成为 RTL,让法国成为 LTR。 我在整个互联网上都进行了检查,但没有找到任何相关信息。 我能做什么?

您可以通过使用 Gradle productFlavors 然后在每个中定义一个 "base" 样式来完成此操作。

首先,将其添加到您的应用级 build.gradle 文件中:

android {
    ...
    flavorDimensions "direction"
    productFlavors {
        left {
            dimension "direction"
        }
        right {
            dimension "direction"
        }
    }
}

其次,在app/src/

下新建两个目录
  • app/src/left/res/values/
  • app/src/right/res/values

然后,在每个文件中,创建一个 styles.xml 文件并添加此样式:

<resources>

    <style name="AppThemeBase" parent="[put whatever you had as AppTheme's parent here]">
        <item name="android:layoutDirection">ltr</item>
    </style>

</resources>

left productFlavor 使用 ltrright productFlavor 使用 rtl。)

最后,在您的 app/src/main/res/values/styles.xml 中,将您的 AppTheme 样式更改为继承自 AppThemeBase:

<style name="AppTheme" parent="AppThemeBase">
    ...
</style>

现在您应该拥有 leftDebugleftReleaserightDebugrightRelease 等构建变体。当您构建 leftDebugleftRelease 时,所有内容都将从左到右。当您构建 rightDebugrightRelease 时,所有内容都将从右到左。

在 Android 中找到了强制 Locale 的完美库,效果非常好!

https://github.com/zeugma-solutions/locale-helper-android