drawer: use custom navigation component

The native NavigationView component is not customizable enough.
To implement a proper account switcher we need to have full control on
this view. The NavigationView now only serves has a container for our
navigation fragment. This fragment manages the header and the navigation
list.

Change-Id: I272c29b466022552b244edd65b725d0dc3ec29eb
Tuleap: #1218
diff --git a/ring-android/app/src/main/res/layout/activity_home.xml b/ring-android/app/src/main/res/layout/activity_home.xml
index 71646e5..6dc9c89 100644
--- a/ring-android/app/src/main/res/layout/activity_home.xml
+++ b/ring-android/app/src/main/res/layout/activity_home.xml
@@ -40,37 +40,36 @@
             android:layout_alignParentStart="true"
             android:layout_alignParentTop="true"
             android:background="@color/color_primary_light"
+            android:elevation="@dimen/toolbar_elevation"
             android:minHeight="?attr/actionBarSize"
             android:popupTheme="@style/Theme.AppCompat.Light.NoActionBar"
             android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
             android:titleTextAppearance="@style/ToolbarTitle"
             app:contentInsetStart="@dimen/toolbar_content_inset"
-            android:elevation="@dimen/toolbar_elevation"
             app:elevation="@dimen/toolbar_elevation"
-            app:titleTextAppearance="@style/ToolbarTitle"/>
+            app:titleTextAppearance="@style/ToolbarTitle" />
 
         <LinearLayout
             android:id="@+id/toolbar_spacer"
             android:layout_width="match_parent"
             android:layout_height="72sp"
-            android:orientation="horizontal"
-            android:elevation="@dimen/toolbar_elevation"
             android:layout_below="@+id/main_toolbar"
             android:background="@color/color_primary_light"
-            android:visibility="gone"
+            android:elevation="@dimen/toolbar_elevation"
+            android:gravity="center_vertical"
+            android:orientation="horizontal"
             android:paddingLeft="@dimen/toolbar_content_inset"
-            android:gravity="center_vertical">
+            android:visibility="gone">
 
-                <TextView
-                    android:id="@+id/toolbar_spacer_title"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="@string/menu_item_accounts"
-                    style="@style/ToolbarTitle"
-                    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
-                    />
+            <TextView
+                android:id="@+id/toolbar_spacer_title"
+                style="@style/ToolbarTitle"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/menu_item_accounts"
+                android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
 
-            </LinearLayout>
+        </LinearLayout>
 
         <FrameLayout
             android:id="@+id/main_frame"
@@ -109,7 +108,13 @@
         android:fitsSystemWindows="true"
         android:theme="@style/AppThemeBase"
         android:windowBackground="@color/white"
-        app:itemTextColor="?android:textColorPrimary"
-        app:menu="@menu/drawer" />
+        app:itemTextColor="?android:textColorPrimary">
+
+        <FrameLayout
+            android:id="@+id/navigation_container"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content" />
+
+    </android.support.design.widget.NavigationView>
 
 </android.support.v4.widget.DrawerLayout>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/layout/frag_menu_header.xml b/ring-android/app/src/main/res/layout/frag_menu_header.xml
deleted file mode 100644
index 6f0a299..0000000
--- a/ring-android/app/src/main/res/layout/frag_menu_header.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout 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:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="@color/color_primary_dark"
-    android:paddingLeft="16dp"
-    android:paddingRight="16dp"
-    android:paddingTop="30dp"
-    android:theme="@style/MenuHeader">
-
-    <RelativeLayout
-        android:id="@+id/profile_container"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content">
-
-        <ImageView
-            android:id="@+id/user_photo"
-            android:layout_width="80dp"
-            android:layout_height="80dp"
-            android:layout_alignParentTop="true"
-            android:layout_centerHorizontal="true"
-            tools:src="@drawable/ic_contact_picture" />
-
-        <View
-            android:id="@+id/anchor"
-            android:layout_width="20dp"
-            android:layout_height="20dp"
-            android:layout_alignBottom="@+id/user_photo"
-            android:layout_centerHorizontal="true" />
-
-        <android.support.design.widget.FloatingActionButton
-            android:id="@+id/edit_profile"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignTop="@+id/anchor"
-            android:layout_toEndOf="@+id/anchor"
-            android:layout_toRightOf="@+id/anchor"
-            android:src="@drawable/ic_action_edit"
-            app:backgroundTint="@color/transparent_light"
-            app:fabSize="mini" />
-
-        <TextView
-            android:id="@+id/user_name"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_below="@+id/edit_profile"
-            android:layout_centerHorizontal="true"
-            android:layout_marginBottom="8dp"
-            android:layout_marginTop="8dp"
-            android:maxLines="1"
-            android:textColor="@color/white"
-            android:textSize="20sp"
-            android:textStyle="bold"
-            tools:text="Username" />
-
-    </RelativeLayout>
-
-    <Spinner
-        android:id="@+id/account_selection"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignParentEnd="true"
-        android:layout_alignParentLeft="true"
-        android:layout_alignParentRight="true"
-        android:layout_alignParentStart="true"
-        android:layout_below="@+id/profile_container"
-        android:layout_toEndOf="@+id/profile_container"
-        android:layout_toRightOf="@+id/profile_container"
-        android:visibility="visible"
-        tools:listitem="@layout/item_account_selected" />
-
-    <Button
-        android:id="@+id/addaccount_btn"
-        style="@style/Widget.AppCompat.Button.Borderless"
-        android:layout_width="wrap_content"
-        android:layout_height="72dp"
-        android:layout_alignParentEnd="true"
-        android:layout_alignParentLeft="true"
-        android:layout_alignParentRight="true"
-        android:layout_alignParentStart="true"
-        android:layout_below="@+id/profile_container"
-        android:text="@string/action_create"
-        android:visibility="gone" />
-</RelativeLayout>
\ No newline at end of file
diff --git a/ring-android/app/src/main/res/layout/frag_navigation.xml b/ring-android/app/src/main/res/layout/frag_navigation.xml
new file mode 100644
index 0000000..d894b9c
--- /dev/null
+++ b/ring-android/app/src/main/res/layout/frag_navigation.xml
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<android.support.v4.widget.NestedScrollView 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:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:theme="@style/AppThemeBase">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@color/color_primary_dark"
+            android:paddingLeft="16dp"
+            android:paddingRight="16dp"
+            android:paddingTop="30dp"
+            android:theme="@style/MenuHeader">
+
+            <RelativeLayout
+                android:id="@+id/profile_container"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <ImageView
+                    android:id="@+id/user_photo"
+                    android:layout_width="80dp"
+                    android:layout_height="80dp"
+                    android:layout_alignParentTop="true"
+                    android:layout_centerHorizontal="true"
+                    tools:src="@drawable/ic_contact_picture" />
+
+                <View
+                    android:id="@+id/anchor"
+                    android:layout_width="20dp"
+                    android:layout_height="20dp"
+                    android:layout_alignBottom="@+id/user_photo"
+                    android:layout_centerHorizontal="true" />
+
+                <android.support.design.widget.FloatingActionButton
+                    android:id="@+id/edit_profile"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignTop="@+id/anchor"
+                    android:layout_toEndOf="@+id/anchor"
+                    android:layout_toRightOf="@+id/anchor"
+                    android:src="@drawable/ic_action_edit"
+                    app:backgroundTint="@color/transparent_light"
+                    app:fabSize="mini" />
+
+                <TextView
+                    android:id="@+id/user_name"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_below="@+id/edit_profile"
+                    android:layout_centerHorizontal="true"
+                    android:layout_marginBottom="8dp"
+                    android:layout_marginTop="8dp"
+                    android:maxLines="1"
+                    android:textColor="@color/white"
+                    android:textSize="20sp"
+                    android:textStyle="bold"
+                    tools:text="Username" />
+
+            </RelativeLayout>
+
+            <Spinner
+                android:id="@+id/account_selection"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentEnd="true"
+                android:layout_alignParentLeft="true"
+                android:layout_alignParentRight="true"
+                android:layout_alignParentStart="true"
+                android:layout_below="@+id/profile_container"
+                android:layout_toEndOf="@+id/profile_container"
+                android:layout_toRightOf="@+id/profile_container"
+                android:visibility="visible"
+                tools:listitem="@layout/item_account_selected" />
+
+            <Button
+                android:id="@+id/addaccount_btn"
+                style="@style/Widget.AppCompat.Button.Borderless"
+                android:layout_width="wrap_content"
+                android:layout_height="72dp"
+                android:layout_alignParentEnd="true"
+                android:layout_alignParentLeft="true"
+                android:layout_alignParentRight="true"
+                android:layout_alignParentStart="true"
+                android:layout_below="@+id/profile_container"
+                android:text="@string/action_create"
+                android:visibility="gone" />
+        </RelativeLayout>
+
+        <FrameLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:paddingTop="8dp">
+
+            <android.support.v7.widget.RecyclerView
+                android:id="@+id/drawer_menu"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:nestedScrollingEnabled="false"
+                tools:targetApi="lollipop" />
+
+        </FrameLayout>
+
+    </LinearLayout>
+</android.support.v4.widget.NestedScrollView>
+
+
diff --git a/ring-android/app/src/main/res/layout/item_menu.xml b/ring-android/app/src/main/res/layout/item_menu.xml
index 340fd37..6de729d 100644
--- a/ring-android/app/src/main/res/layout/item_menu.xml
+++ b/ring-android/app/src/main/res/layout/item_menu.xml
@@ -1,12 +1,36 @@
 <?xml version="1.0" encoding="utf-8"?>
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/menu_title_categorie"
+
+<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="?android:attr/listPreferredItemHeight"
-    android:gravity="center_vertical"
-    android:paddingBottom="10dip"
-    android:paddingLeft="15dip"
-    android:paddingTop="10dip"
-    android:background="?android:attr/activatedBackgroundIndicator"
-    android:textColor="@color/black"
-    android:textSize="20sp" />
+    android:layout_height="48dp"
+    android:background="?android:attr/selectableItemBackground"
+    android:drawSelectorOnTop="true">
+
+    <android.support.v7.widget.AppCompatImageView
+        android:id="@+id/navigation_item_icon"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerVertical="true"
+        android:layout_marginLeft="16dp"
+        android:layout_marginStart="16dp"
+        android:alpha="0.54"
+        tools:src="@drawable/ic_home_black" />
+
+    <TextView
+        android:id="@+id/navigation_item_title"
+        android:layout_width="match_parent"
+        android:layout_height="?android:attr/listPreferredItemHeight"
+        android:layout_centerVertical="true"
+        android:layout_marginEnd="16dp"
+        android:layout_marginLeft="72dp"
+        android:layout_marginRight="16dp"
+        android:layout_marginStart="72dp"
+        android:alpha="0.87"
+        android:fontFamily="sans-serif-medium"
+        android:gravity="center_vertical"
+        android:textColor="@color/black"
+        android:textSize="14sp"
+        tools:text="Home" />
+
+</RelativeLayout>
diff --git a/ring-android/app/src/main/res/menu/drawer.xml b/ring-android/app/src/main/res/menu/drawer.xml
deleted file mode 100644
index a58603c..0000000
--- a/ring-android/app/src/main/res/menu/drawer.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?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/menuitem_home"
-            android:checked="true"
-            android:icon="@drawable/ic_home_black"
-            android:title="@string/menu_item_home"/>
-        <item
-            android:id="@+id/menuitem_accounts"
-            android:icon="@drawable/ic_group_black"
-            android:title="@string/menu_item_accounts"/>
-        <item
-            android:id="@+id/menuitem_prefs"
-            android:icon="@drawable/ic_settings_black"
-            android:title="@string/menu_item_settings"/>
-        <item
-            android:id="@+id/menuitem_share"
-            android:icon="@drawable/ic_share_black"
-            android:title="@string/menu_item_share"/>
-        <item
-            android:id="@+id/menuitem_about"
-            android:icon="@drawable/ic_info_black"
-            android:title="@string/menu_item_about"/>
-    </group>
-</menu>
\ No newline at end of file