Java 有没有办法自动设置所有布局以支持android中RTL和LTR方向类型的语言
我是android开发新手,一直致力于改变整个Java 有没有办法自动设置所有布局以支持android中RTL和LTR方向类型的语言,java,android,xml,android-edittext,textview,Java,Android,Xml,Android Edittext,Textview,我是android开发新手,一直致力于改变整个android应用程序的语言。我找到了一种方法,可以将目录中的字符串设置为strings languagecode,并将清单文件中的android:supportsRtl=“true”设置为,它有助于自动更改文本字段的值及其方向LTR和RTL,但我在EditText字段中遇到了问题,因为它的方向需要由Java代码为每个xml文件更改和设置。有没有办法在整个应用程序中以最小的工作量自动设置EditText的方向?请注意,我的项目中至少有api级别15。
android
应用程序的语言。我找到了一种方法,可以将目录中的字符串设置为strings languagecode
,并将清单文件中的android:supportsRtl=“true”
设置为,它有助于自动更改文本字段
的值及其方向LTR
和RTL
,但我在EditText
字段中遇到了问题,因为它的方向需要由Java代码为每个xml
文件更改和设置。有没有办法在整个应用程序中以最小的工作量自动设置EditText
的方向?请注意,我的项目中至少有api级别15
。请帮帮我
提前谢谢。绝对感谢!您可以将其添加到styles.xml中的主题中,并应用于所有文本视图:
<item name="android:textDirection">locale</item>
locale
希望有帮助 您可以尝试这些方法来更改RTL或LTR布局方向
对于从右到左:
地点:阿拉伯语(ar)、希伯来语(he)
从左到右:
地区外:英语(英语)、泰米尔语(ta)等
}
调用这些方法来更改RTL或LTR布局方向
愉快的编码…您不需要通过编程更改edittext(或任何视图)的方向,当您指定supportsRtl true时,Android会为您这样做。你一定错过了什么。textDirection要求最低api级别17,但我的最低api级别是15。那么我需要做的是。@singh.indolia不幸的是,在那个版本的Android中,您将很难支持RTL。完全支持仅出现在4.2(API级别17)中。Yes@singh.indolia。我建议你用编程的方式来做。
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.
}
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.