强制一种构建风味 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 使用 ltr
,right
productFlavor 使用 rtl
。)
最后,在您的 app/src/main/res/values/styles.xml
中,将您的 AppTheme
样式更改为继承自 AppThemeBase
:
<style name="AppTheme" parent="AppThemeBase">
...
</style>
现在您应该拥有 leftDebug
、leftRelease
、rightDebug
和 rightRelease
等构建变体。当您构建 leftDebug
或 leftRelease
时,所有内容都将从左到右。当您构建 rightDebug
或 rightRelease
时,所有内容都将从右到左。
在 Android 中找到了强制 Locale 的完美库,效果非常好!
我有一个具有 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 使用 ltr
,right
productFlavor 使用 rtl
。)
最后,在您的 app/src/main/res/values/styles.xml
中,将您的 AppTheme
样式更改为继承自 AppThemeBase
:
<style name="AppTheme" parent="AppThemeBase">
...
</style>
现在您应该拥有 leftDebug
、leftRelease
、rightDebug
和 rightRelease
等构建变体。当您构建 leftDebug
或 leftRelease
时,所有内容都将从左到右。当您构建 rightDebug
或 rightRelease
时,所有内容都将从右到左。
在 Android 中找到了强制 Locale 的完美库,效果非常好!