我不得不更改整个 android
应用程序的语言。我找到了一种将 strings
设置为 values
目录和 android:supportsRtl="true"
中的 strings-languagecode
的方法> 在 list 文件中,它很适合自动更改 text fields
的值及其方向 LTR
和 RTL
但我遇到了问题在 EditText
字段中,因为它的方向需要由每个 xml
文件的 Java 代码更改和设置。有什么方法可以在整个应用程序中以最小的努力自动设置 EditText
的方向?请注意,我的项目中的最低 api 级别 15
。
最佳答案
您可以尝试这些方法来更改 RTL 或 LTR 布局方向。
对于从右到左:
例如。 locale : 阿拉伯语(ar), 希伯来语(he);
private void setRtl(){
String languageToLoad = "ar"; // rtl language Arabic
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
//layout direction
Bidi b = new Bidi(languageToLoad,Bidi.DIRECTION_DEFAULT_RIGHT_TO_LEFT);
b.isRightToLeft();
//save current locale in SharedPreferences
SharedPreferences languagepref = getSharedPreferences("language",MODE_PRIVATE);
SharedPreferences.Editor editor = languagepref.edit();
editor.putString("languageToLoad",languageToLoad );
editor.commit();
startActivity(...);// refresh activity.
}
从左到右:
ex locale : English(en), Tamil(ta), etc.
private void setLtr(){
String languageToLoad = "en"; // ltr language English
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
//layout direction
Bidi b = new Bidi(languageToLoad, Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
b.isLeftToRight();
//save current locale in SharedPreferences
SharedPreferences languagepref = getSharedPreferences("language",MODE_PRIVATE);
SharedPreferences.Editor editor = languagepref.edit();
editor.putString("languageToLoad",languageToLoad );
editor.commit();
startActivity(...);// refresh activity.
调用这些方法来改变 RTL 或 LTR 布局方向。
关于java - 有什么方法可以自动设置所有布局以支持android中的RTL和LTR方向类型的语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40859072/