0

I use this code for navigation drawer

<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="start">

        <android.support.design.widget.NavigationView
            android:id="@+id/nav_view"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:fitsSystemWindows="true"
            android:visibility="visible">
            <include
                layout="@layout/menu"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

        </android.support.design.widget.NavigationView>

menu.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context="ir.app.ir.live24.MainActivity"
    android:clickable="false"
    android:gravity="center"
    android:background="#fff">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Text"
            android:id="@+id/textView3"
            android:textColor="#000" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Text"
            android:id="@+id/textView4"
            android:textColor="#000"
            android:layout_weight="0.5" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Text"
            android:id="@+id/textView5"
            android:textColor="#000" />
    </LinearLayout>
</RelativeLayout>

In view android studio work correct : http://i65.tinypic.com/wtvu4k.jpg

But in device after launch, top of menu has gone : http://i68.tinypic.com/2nu0ub5.jpg

Next problem: clickable not work for menu

Please help me

My Name
  • 285
  • 1
  • 4
  • 18

2 Answers2

1

You should not add menu layout : in navigationView you can add menu directly..using app:menu="@menu/menu_navigation"

use this layout:

 <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="start">


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

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        app:menu="@menu/menu_navigation"   //menu items in drawer
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        android:visibility="visible"></android.support.design.widget.NavigationView>

</android.support.v4.widget.DrawerLayout>

now in res/menu/menu_navigation add the menu items like:

 <?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/profile"
            android:icon="@drawable/profile_icon"
            android:title="Profile" />

        <item
            android:id="@+id/settings"
            android:icon="@drawable/settings_icon"
            android:title="Settings" />

        <item
            android:id="@+id/about_us"
            android:icon="@drawable/about_us"
            android:title="About us" />

    </group>
</menu>

Here is the complete Example

rafsanahmad007
  • 23,683
  • 6
  • 47
  • 62
1

# Problem 1: Top of menu has gone.

1. Add android:paddingTop="24dp" to menu container RelativeLayout to show the top menu TextView.

2. Add android:background="?attr/selectableItemBackground" to TextView to show the ripple effect when click on it.

Update your menu.xml as below:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:clickable="false"
    android:gravity="center"
    android:paddingTop="24dp"
    android:background="#fff">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/textView3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="16dp"
            android:text="New Text"
            android:textColor="#000"
            android:background="?attr/selectableItemBackground"/>

        <TextView
            android:id="@+id/textView4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="16dp"
            android:text="New Text"
            android:textColor="#000"
            android:layout_weight="0.5" />

        <TextView
            android:id="@+id/textView5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="16dp"
            android:text="New Text"
            android:textColor="#000"
            android:background="?attr/selectableItemBackground"/>
    </LinearLayout>
</RelativeLayout>

FYI, I have added android:padding="16dp" to all TextView's to give proper indents.

# Problem 2: Clickable not work for menu.

Set onClick listener to TextView to handle click events:

// From Activity onCreate() method

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ........................
    ...............................

    TextView textView3 = (TextView) findViewById(R.id.textView3);

    textView3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(getApplicationContext(), "Clicked", Toast.LENGTH_SHORT).show();
        }
    });
}

OUTPUT:

enter image description here

Hope this will help~

Community
  • 1
  • 1
Ferdous Ahamed
  • 21,438
  • 5
  • 52
  • 61