强制使用一种构建风味RTL和一种构建风味LTR

时间:2018-11-13 09:57:44

标签: android locale right-to-left

我有一个带有2种风味的应用程序:“以色列”和“法国”。 对于每种构建风格,我都想强制布局方向,让以色列成为RTL,让法国成为LTR,而不考虑设备语言。 我检查了整个互联网,没有找到任何有关它的信息。 我该怎么办?

2 个答案:

答案 0 :(得分:0)

您可以通过使用Gradle productFlavors,然后在每个样式中定义一个“基本”样式来完成此操作。

首先,将其添加到您的应用程序级别的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>

(对于ltr productFlavor使用left,对于rtl productFlavor使用right。)

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

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

现在,您应该拥有leftDebugleftReleaserightDebugrightRelease之类的构建变体。构建leftDebugleftRelease时,所有内容都会从左到右。构建rightDebugrightRelease时,一切都会从右到左。

答案 1 :(得分:0)

找到了一个完美的库来强制在Android中使用Locale,就像魔术一样!

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