Как защитить мой пользовательский интерфейс приложения от изменения, когда я изменил язык своего приложения программно?

Я разрабатываю приложение на двух языках: английском и арабском. и для этого у меня в приложении есть кнопка для программной смены языка. Я могу изменить его, нажав кнопку, но когда я меняю его с английского на арабский, мой пользовательский интерфейс также меняется слева направо, но я хочу, чтобы мой пользовательский интерфейс оставался одинаковым для обоих. как мне это сделать? Я меняю язык, используя этот метод частный статический контекст updateResourcesLegacy (контекст контекста, язык строк) {

    Locale locale = new Locale(language);
    Locale.setDefault(locale);

    Resources resources = context.getResources();

    Configuration configuration = resources.getConfiguration();
    configuration.locale = locale;

    resources.updateConfiguration(configuration, resources.getDisplayMetrics());

    return context;
}

и это работает, но пользовательский интерфейс отражается.

Итак, вы хотите изменить только ресурсы, а не макет, верно?

Muhammed Refaat 19.02.2019 18:16

да, я хочу только текст, а не пользовательский интерфейс.

Davinder Goel 21.02.2019 06:04
0
2
78
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Значит, вам не нужна поддержка RTL в вашем приложении? Попробуйте android:supportsRtl="false" в своем манифесте.

<application
android:allowBackup = "true"
android:icon = "@mipmap/ic_launcher"
android:label = "@string/app_name"
android:supportsRtl = "false"
android:theme = "@style/AppTheme">
...
</application>

Попробуйте добавить android:supportsRtl = "false" в файл манифест.xml внутри тега <application>. Это исправит ориентацию пользовательского интерфейса, но может негативно повлиять на ориентацию текста, поскольку в арабском языке необходимо писать справа налево.

Другое решение — добавить android:layoutDirection = "ltr" в свои действия.

Другие вопросы по теме