Intereting Posts
Как удалить неиспользуемые ресурсы из сторонних библиотек, которые я включил в Android? Что такое OBB (Opaque Binary Blob) на Android-сайте? Использование атрибута для изменения цвета рисоваемого элемента Android: как обновить Android-приложение с помощью билета inapp? Вызов AsyncTask из широковещательного приемника android Отладка модулей C ++ / родной библиотеки, не работающих с Android Studio (используется Cmake) Уровни регистрации Android Влияние HTTP-запросов на время работы от батареи SetSupportProgressBarIndeterminateVisibility raise java.lang.NullPointerException при использовании с Android 5.0 SDK (API 21) Использование Android SlidingPaneLayout с ViewPager Debug Lua в проекте Java с использованием LuaJava Системные настройки принудительно закрываются при открытии виджета Как получить доступ к строке с использованием динамического имени строки в android (аналогично eval в javascript)? Запуск действия ACTION_VIEW для открытия браузера, как мне вернуться в мое приложение? Как удалить значок электронной почты из эмуляции Android Studio

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.