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