Android: программно изменить все направления размещения приложений

Как изменить направление всего приложения на RTL? Я пишу приложение, что пользователь должен выбрать его язык при первом запуске, и макет должен измениться в зависимости от выбора пользователя в RTL или останется LTR. Я использовал для добавления android:supportsRtl="true" android:layoutDirection="rtl" android:supportsRtl="true" для AndroidManifest и android:layoutDirection="rtl" для каждого макета, но у этого подхода есть некоторые проблемы, как android:layoutDirection="rtl" ниже:

Одна из проблем заключается в том, что когда я меняю направление на RTL ActionBar значок дома ActionBar или кнопки навигации (когда включен домашний режим) остается LRT и просто перемещается вправо.

Я также попытался изменить направление программно, и результат был таким же:

 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1){ getWindows().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL); } 

Введите описание изображения здесь

Есть ли способ заставить все действия сразу стать RTL или мы должны установить направление в каждом мероприятии отдельно?

Solutions Collecting From Web of "Android: программно изменить все направления размещения приложений"

Вы можете использовать этот кусок кода, в то время как minSdk вашего приложения> = 17.

Я использовал fa для Farsi , вы можете использовать другой язык rtl.

  Configuration configuration = getResources().getConfiguration(); configuration.setLayoutDirection(new Locale("fa")); getResources().updateConfiguration(configuration, getResources().getDisplayMetrics()); 

Кнопка «Назад» остается в режиме LTR, потому что у нее есть только один ресурс, который является стрелкой, указывающей влево. Вам нужно указать новую папку ресурсов, например drawable-ldrtl-hdpi, и поместить тот же значок, который указывает прямо в этой папке.

У меня также есть эта проблема, я считаю, что если ширина вашего представления задана MATCH_PARENT , вы должны установить гравитацию Gravity.LEFT в модели LTR и установить гравитацию Gravity.RIGHT с помощью Gravity.RIGHT в модели RTL.