Я разрабатываю приложение на двух языках: английском и арабском. и для этого у меня в приложении есть кнопка для программной смены языка. Я могу изменить его, нажав кнопку, но когда я меняю его с английского на арабский, мой пользовательский интерфейс также меняется слева направо, но я хочу, чтобы мой пользовательский интерфейс оставался одинаковым для обоих. как мне это сделать? Я меняю язык, используя этот метод частный статический контекст 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;
}
и это работает, но пользовательский интерфейс отражается.
да, я хочу только текст, а не пользовательский интерфейс.
Значит, вам не нужна поддержка 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" в свои действия.
Итак, вы хотите изменить только ресурсы, а не макет, верно?