我有一个有两种语言版本的应用程序 - 英语和希伯来语。
我使用翻译编辑器添加了希伯来语字符串,并且我根据用户选择更改区域设置。
更改区域设置时,它会像我想要的那样将字符串设置为希伯来语,但它也会将希伯来语的工具栏方向更改为从右到左,并将标题和后退按钮移至右侧。
英语区域设置(默认):
有没有办法保持工具栏方向像英文一样? 我想保留工具栏左侧的后退按钮和标题。
编辑: 将
android:layoutDirection="ltr"
或 android:supportsRtl="false"
添加到 toolbar
xml 后。箭头是向后的。怎么解决?
更改区域设置,但保持从左到右和其他手机方向
具体来说,将
android:supportsRtl="false"
添加到 manifest 文件中的
<application>
元素。
了解更多信息链接
将 android:layoutDirection="ltr" 添加到您的应用栏布局中。这将迫使 ltr 在任何布局方向上
我也遇到这个问题了。我有一种方法可以更改语言的区域设置和应用程序配置:
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;
}
它正在改变语言环境,同时改变layoutDirection,所以你可以通过手动设置方向来解决这个问题:
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;
}
使用约束布局来处理此类问题,如果你不想改变后退按钮的位置,请使用 应用程序:layout_constraintLeft_toLeftOf =“父级”或应用程序:layout_constraintRight_toRightOf =“父级”
但是如果您想在更改 Local 后更改 Button 或任何其他元素的位置,您可以使用 应用程序:layout_constraintStart_toStartOf =“父”或应用程序:layout_constraintEnd_toEndOf =“父”