2

Мне нужно выровнять элементы меню навигации вправо. Я прочитал много статей и вопросов и ответов, но не смог найти, что случилось в моем проекте. Это мой XML:Android справа налево Элементы меню NavigationDrawer не RTL

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:openDrawer="right"> 

<include 
    layout="@layout/content_activity_home" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

<android.support.design.widget.NavigationView 
    android:id="@+id/nav_view" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="right" 
    android:fitsSystemWindows="true" 
    app:headerLayout="@layout/nav_header_activity_home" 
    app:menu="@menu/activity_home_drawer" /> 

Это activity_home_drawer.xml:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

<group android:checkableBehavior="single"> 
    <item 
     android:id="@+id/menu_account" 
     android:icon="@drawable/ic_profile" 
     android:title="حساب کاربری" /> 
    <item 
     android:id="@+id/menu_logout" 
     android:icon="@drawable/ic_sign_out" 
     android:title="خروج از حساب" /> 
</group> 

я могу сделать сам ящик, чтобы открыть справа, но элементы NavigationView еще остаются слева направо. Вы можете увидеть результат здесь:

enter image description here

Как вы видите пункты меню не справа налево. Как сделать их rtl?

+0

добавить этот код в моем приложении, но я получаю эту ошибку: «Нет вид ящика найден с гравитационной ЛЕВЫМ» –

+0

@ Navid_pdp11 пришлите мне свой код, чтобы исправить это – Fartab

+0

добавить направление RTL в мой ящик и открыто с права теперь :) –

ответ

6

попробуйте добавить андроид: LayoutDirection = "РТЛ"

<android.support.design.widget.NavigationView 
android:layoutDirection="rtl" 
android:id="@+id/navigation_view" 
android:layout_width="wrap_content" 
android:layout_height="match_parent" 
android:layout_gravity="right" 
android:fitsSystemWindows="true" 
app:headerLayout="@layout/nav_header_main" 
app:menu="@menu/activity_main_drawer" /> 

Это работает на уровне апи 17 или выше. Для старых устройств есть трюк. В уровень приложения андроида манифеста установить supportRtl = "ложных" и в макетах набор layout_gravity = "право". Это работает правильно.

+0

Да, это работает. Спасибо @darwin. – Fartab

+0

Счастливое кодирование ... – darwin

Смежные вопросы