2016-11-29 1 views
2

Я новичок в разработке Android, застрял, чтобы изменить язык всего приложения android. я нашел способ, чтобы установить strings в strings-languagecode в values директории и android:supportsRtl="true" в файле манифеста, это хорошо для изменения значения text fields и их направления LTR и RTL автоматически, но я получаю эту проблему в EditText поле, потому что это направление должно быть изменен и установлен кодом Java для каждого файла xml. Есть ли способ установить направление EditText автоматически в целом с минимальным усилием? Обратите внимание, что у меня есть минимальный api level 15 в моем проекте. Пожалуйста, помогите мне.Есть ли способ автоматически установить все макеты для поддержки типов направлений RTL и LTR для языков в android?

Заранее спасибо.

+0

Вам не нужно менять направление EditText (или любой другой точки зрения) программно, Android сделать это для вас, когда вы указываете supportsRtl истинный. Вы, должно быть, что-то пропустили. –

ответ

1

Вы можете попробовать эти методы, чтобы изменить направления размещения RTL или LTR.

Для справа налево:

отл. locale: арабский (ар), иврит (он);

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. 
} 

Для Слева направо:

экс локали:. English (EN), тамильский (та), и т.д.

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.

Счастливый кодирования ....

0

Абсолютно! Вы можете добавить его к вашей теме в styles.xml, и она будет применяться ко всем TextViews:

<item name="android:textDirection">locale</item> 

Надежда, что помогает!

+0

textDirection требуется минимальный уровень api 17, но у меня минимальный уровень api равен 15. то что мне нужно делать. –

+0

@ singh.indolia К сожалению, у вас возникнут проблемы с поддержкой RTL в этой версии Android. Полная поддержка появилась только в версии 4.2 (уровень API 17). – Malcolm

+0

Да @ singh.indolia. Я предлагаю вам сделать это программным путем. – Faraz