I have an app that is available in two languages - English and Hebrew.
I added Hebrew strings using the Translation Editor and I am changing the Locale according to
Add android:layoutDirection="ltr" to your appbar layout. That will force ltr in any layout direction
Change Locale but keep left-to-right and other phone orientations
Specifically, add android:supportsRtl="false"
to the <application>
element in your manifest file.
For more information Link
I had this problem too. I had a method to change the locale of the language and the application configuration :
private String loadPreference() {
SharedPreferences shp = getSharedPreferences("CommonPrefs", Activity.MODE_PRIVATE);
String language = shp.getString("Language","fa");
Locale myLocale = new Locale(language);
Locale.setDefault(myLocale);
Configuration config = new Configuration();
config.locale = myLocale;
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
String locale = getResources().getConfiguration().locale.getDisplayName();
System.out.println(locale);
return locale;
}
It is changing locale and simultaneously changing the layoutDirection, so you can solve this by setting the direction manually:
private String loadPreference() {
SharedPreferences shp = getSharedPreferences("CommonPrefs", Activity.MODE_PRIVATE);
String language = shp.getString("Language","fa");
Locale myLocale = new Locale(language);
Configuration config = new Configuration();
config.setLocale(myLocale);
//manually set layout direction to a LTR location
config.setLayoutDirection(new Locale("en"));
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
String locale = getResources().getConfiguration().locale.getDisplayName();
return locale;
}