Принудительная сборка ароматизатора RTL и сборка ароматизатора LTR - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть приложение с 2 вариантами сборки: "Израиль" и "Франция".Я хочу, чтобы для каждого варианта сборки направление компоновки для Израиля было RTL, а для Франции - LTR без учета языка устройства.Я проверил весь интернет и ничего не нашел по этому поводу.Что я могу сделать?

1 Ответ

0 голосов
/ 14 ноября 2018

Вы можете сделать это, используя 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 для left productFlavor и rtl для right productFlavor.)

Наконец, в вашем app/src/main/res/values/styles.xml, измените свой стиль AppTheme для наследования от AppThemeBase:

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

Теперь у вас должны быть варианты сборки, такие как leftDebug, leftRelease, rightDebug и rightRelease.Когда вы строите leftDebug или leftRelease, все будет слева направо.Когда вы строите rightDebug или rightRelease, все будет справа налево.

...