如何在菜单中设置RTL?

时间:2018-03-25 07:09:56

标签: java android navigation-drawer android-menu

在我的应用程序中,我想使用menuDrawer菜单 我想设置RTL菜单,我写下面的代码,但没有设置RTL。

菜单中的我的代码:

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

    <group
        android:layout_gravity="end"
        android:checkableBehavior="single"
        android:gravity="end">

        <!-- Recommended icon color code: #828282 -->
        <item
            android:id="@+id/action_home"
            android:layout_gravity="end"
            android:gravity="end"
            android:icon="@drawable/ic_home"
            android:title="@string/site_menu_home" />

        <item
            android:id="@+id/action_menus"
            android:layout_gravity="end"
            android:gravity="end"
            android:icon="@drawable/ic_menu1"
            android:title="@string/site_menu_menus" />

抽屉代码为XML:

<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:layoutDirection="rtl"
    android:background="@color/white"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header_main"
    app:menu="@menu/menu_drawer" />

我的代码结果是:https://s9.postimg.org/5m000kf3z/Capture_2018-03-25-11-30-57.png

如何修复它并设置RTL菜单?

1 个答案:

答案 0 :(得分:0)

supportsRtl

中添加manifest.xml
<application
    ....
    android:supportsRtl="true"
    ....
>

</application>

并且无需在 menu.xml

中设置layout_gravitygravity

如果您不想使用supportsRtl,可以使用菜单项的自定义布局。

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

    <item
        android:id="@+id/action_home"
        android:title="Home"
        app:actionLayout="@layout/item_nav_bar" <!-- important part -->
        app:showAsAction="ifRoom"/>

</menu>

<强> item_nav_bar.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:gravity="center"
    android:padding="10dp">

    <ImageView
        android:id="@+id/navImage"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:src="@drawable/ic_menu_camera"/>
</FrameLayout>

<强> MainActivity.java

public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener
{

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {

        ....

        // Changing image in NavigationDrawer

        // First Item
        MenuItem item1 = navigationView.getMenu().getItem(0);
        ImageView img = ((ImageView) item1.getActionView().findViewById(R.id.navImage));
    }
}

从代码中删除layoutDirectiongravities

选中此tutorial