Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法自动设置所有布局以支持android中RTL和LTR方向类型的语言_Java_Android_Xml_Android Edittext_Textview - Fatal编程技术网

Java 有没有办法自动设置所有布局以支持android中RTL和LTR方向类型的语言

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开发新手,一直致力于改变整个
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.