Выровнять значки панели инструментов справа налево?

В моем приложении я реализовал несколько языков, включая арабский язык, который начинается справа налево. Я хочу, чтобы все значки на панели инструментов были RIGHT_TO_LEFT.

Я пробовал layout_gravity="right" и gravity="right", но ничего не вышло.

Код моей панели инструментов:

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/primary_color"
    app:popupTheme="@style/Theme.AppCompat.Light"/>

Вот что я хочу:



person Caffe Latte    schedule 28.03.2015    source источник


Ответы (2)


Официальная поддержка письма справа налево была введена в Android 4.2 (уровень API 17), поэтому это будет работать, только если ваш минимальный уровень SDK равен 17:

1) Поместите атрибут android:supportsRtl="true" в файл AndroidManifest, чтобы поддерживать направления макета справа налево.

2) Во-вторых, поместите этот код в метод onCreate() вашей активности:

if (getWindow().getDecorView().getLayoutDirection() == View.LAYOUT_DIRECTION_LTR){
            getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
        }

Это сделает ваше размещение справа налево, если система использует соответствующий язык. Также убедитесь, что вы используете начало/конец вместо левого/правого при настройке отступов, чтобы убедиться, что все элементы выровнены правильно.

Для получения дополнительной информации об официальном объявлении о поддержке: http://android-developers.blogspot.be/2013/03/native-rtl-support-in-android-42.html

person Jenthe    schedule 28.03.2015
comment
Спасибо, это сработало. Однако требуемый API ограничивал меня тем, что я не использовал его, потому что многие устройства все еще имеют более низкий API. тоже проголосовал ;) - person Caffe Latte; 28.03.2015
comment
для панели инструментов это работает, только если я перезапущу приложение. Использовали то же самое для другого представления, и оно работает без перезапуска приложения. . - person Balwinder SIngh; 26.11.2018

Поместите атрибут android:supportsRtl="true" в файл AndroidManifest. После этого добавьте строку ниже в тег панели инструментов:

android:layoutDirection="rtl"
person M Karimi    schedule 26.08.2019