瀏覽代碼

bottom bar in all activities

tobiasKaminsky 8 年之前
父節點
當前提交
41494099f2

+ 9 - 0
src/main/java/com/owncloud/android/ui/activity/ActivitiesListActivity.java

@@ -28,6 +28,7 @@ import android.accounts.OperationCanceledException;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
+import android.support.design.widget.BottomNavigationView;
 import android.support.v4.widget.SwipeRefreshLayout;
 import android.support.v7.widget.DividerItemDecoration;
 import android.support.v7.widget.LinearLayoutManager;
@@ -50,6 +51,7 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.resources.activities.GetRemoteActivitiesOperation;
 import com.owncloud.android.ui.adapter.ActivityListAdapter;
+import com.owncloud.android.utils.DisplayUtils;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -163,6 +165,13 @@ public class ActivitiesListActivity extends FileActivity {
         recyclerView.setLayoutManager(layoutManager);
         recyclerView.addItemDecoration(dividerItemDecoration);
 
+        BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation_view);
+
+        if (getResources().getBoolean(R.bool.bottom_toolbar_enabled)) {
+            bottomNavigationView.setVisibility(View.VISIBLE);
+            DisplayUtils.setupBottomBar(bottomNavigationView, getResources(), this, -1);
+        }
+
         fetchAndSetData();
     }
 

+ 8 - 0
src/main/java/com/owncloud/android/ui/activity/ContactsPreferenceActivity.java

@@ -29,6 +29,7 @@ import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.support.annotation.NonNull;
+import android.support.design.widget.BottomNavigationView;
 import android.support.design.widget.Snackbar;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentTransaction;
@@ -119,6 +120,13 @@ public class ContactsPreferenceActivity extends FileActivity implements FileFrag
         } else {
             lastBackup.setText(DisplayUtils.getRelativeTimestamp(getBaseContext(), lastBackupTimestamp));
         }
+
+        BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation_view);
+
+        if (getResources().getBoolean(R.bool.bottom_toolbar_enabled)) {
+            bottomNavigationView.setVisibility(View.VISIBLE);
+            DisplayUtils.setupBottomBar(bottomNavigationView, getResources(), this, -1);
+        }
     }
 
     @Override

+ 9 - 0
src/main/java/com/owncloud/android/ui/activity/FolderSyncActivity.java

@@ -26,6 +26,7 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.support.annotation.NonNull;
+import android.support.design.widget.BottomNavigationView;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentTransaction;
 import android.support.v7.widget.GridLayoutManager;
@@ -48,6 +49,7 @@ import com.owncloud.android.ui.adapter.FolderSyncAdapter;
 import com.owncloud.android.ui.decoration.MediaGridItemDecoration;
 import com.owncloud.android.ui.dialog.SyncedFolderPreferencesDialogFragment;
 import com.owncloud.android.ui.dialog.parcel.SyncedFolderParcelable;
+import com.owncloud.android.utils.DisplayUtils;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -117,6 +119,13 @@ public class FolderSyncActivity extends FileActivity implements FolderSyncAdapte
         mRecyclerView.setLayoutManager(lm);
         mRecyclerView.setAdapter(mAdapter);
 
+        BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation_view);
+
+        if (getResources().getBoolean(R.bool.bottom_toolbar_enabled)) {
+            bottomNavigationView.setVisibility(View.VISIBLE);
+            DisplayUtils.setupBottomBar(bottomNavigationView, getResources(), this, -1);
+        }
+
         load(gridWidth * 2);
     }
 

+ 9 - 0
src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.java

@@ -28,6 +28,7 @@ import android.accounts.OperationCanceledException;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
+import android.support.design.widget.BottomNavigationView;
 import android.support.v4.widget.SwipeRefreshLayout;
 import android.support.v7.widget.DividerItemDecoration;
 import android.support.v7.widget.LinearLayoutManager;
@@ -51,6 +52,7 @@ import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.resources.notifications.GetRemoteNotificationsOperation;
 import com.owncloud.android.lib.resources.notifications.models.Notification;
 import com.owncloud.android.ui.adapter.NotificationListAdapter;
+import com.owncloud.android.utils.DisplayUtils;
 
 import java.io.IOException;
 import java.util.List;
@@ -168,6 +170,13 @@ public class NotificationsActivity extends FileActivity {
         recyclerView.setLayoutManager(layoutManager);
         recyclerView.addItemDecoration(dividerItemDecoration);
 
+        BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation_view);
+
+        if (getResources().getBoolean(R.bool.bottom_toolbar_enabled)) {
+            bottomNavigationView.setVisibility(View.VISIBLE);
+            DisplayUtils.setupBottomBar(bottomNavigationView, getResources(), this, -1);
+        }
+
         fetchAndSetData();
     }
 

+ 10 - 0
src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java

@@ -33,10 +33,12 @@ import android.content.ServiceConnection;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.IBinder;
+import android.support.design.widget.BottomNavigationView;
 import android.support.v4.app.FragmentTransaction;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
+import android.view.View;
 import android.widget.Toast;
 
 import com.owncloud.android.R;
@@ -52,6 +54,7 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.operations.CheckCurrentCredentialsOperation;
 import com.owncloud.android.ui.fragment.UploadListFragment;
+import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.MimeTypeUtil;
 
 import java.io.File;
@@ -103,6 +106,13 @@ public class UploadListActivity extends FileActivity implements UploadListFragme
         } // else, the Fragment Manager makes the job on configuration changes
 
         getSupportActionBar().setTitle(getString(R.string.uploads_view_title));
+
+        BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation_view);
+
+        if (getResources().getBoolean(R.bool.bottom_toolbar_enabled)) {
+            bottomNavigationView.setVisibility(View.VISIBLE);
+            DisplayUtils.setupBottomBar(bottomNavigationView, getResources(), this, -1);
+        }
     }
 
     private void createUploadListFragment(){

+ 18 - 41
src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@ -34,7 +34,6 @@ import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
 import android.preference.PreferenceManager;
-import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.annotation.StringRes;
 import android.support.design.widget.BottomNavigationView;
@@ -84,7 +83,6 @@ import com.owncloud.android.ui.dialog.RenameFileDialogFragment;
 import com.owncloud.android.ui.events.ChangeMenuEvent;
 import com.owncloud.android.ui.events.DummyDrawerEvent;
 import com.owncloud.android.ui.events.FavoriteEvent;
-import com.owncloud.android.ui.events.MenuItemClickEvent;
 import com.owncloud.android.ui.events.SearchEvent;
 import com.owncloud.android.ui.helpers.SparseBooleanArrayParcelable;
 import com.owncloud.android.ui.interfaces.OCFileListFragmentInterface;
@@ -219,7 +217,7 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
 
         if (getResources().getBoolean(R.bool.bottom_toolbar_enabled)) {
             bottomNavigationView.setVisibility(View.VISIBLE);
-            prepareBottomNavigationView();
+            DisplayUtils.setupBottomBar(bottomNavigationView, getResources(), getActivity(), R.id.nav_bar_files);
         }
 
         if (!getResources().getBoolean(R.bool.bottom_toolbar_enabled) || savedInstanceState != null) {
@@ -247,44 +245,6 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
         return v;
     }
 
-    private void prepareBottomNavigationView() {
-        if (getResources().getBoolean(R.bool.use_home)) {
-            bottomNavigationView.getMenu().findItem(R.id.nav_bar_files).setTitle(getResources().
-                    getString(R.string.drawer_item_home));
-            bottomNavigationView.getMenu().findItem(R.id.nav_bar_files).setIcon(R.drawable.ic_home);
-        }
-
-        bottomNavigationView.setOnNavigationItemSelectedListener(
-                new BottomNavigationView.OnNavigationItemSelectedListener() {
-                    @Override
-                    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
-                        switch (item.getItemId()) {
-                            case R.id.nav_bar_files:
-                                EventBus.getDefault().post(new MenuItemClickEvent(item));
-                                menuItemAddRemoveValue = MenuItemAddRemove.ADD_GRID_AND_SORT_WITH_SEARCH;
-                                if (getActivity() != null) {
-                                    getActivity().invalidateOptionsMenu();
-                                }
-                                break;
-                            case R.id.nav_bar_favorites:
-                                EventBus.getDefault().post(new SearchEvent("", SearchOperation.SearchType.FAVORITE_SEARCH,
-                                        SearchEvent.UnsetType.UNSET_DRAWER));
-                                break;
-                            case R.id.nav_bar_photos:
-                                EventBus.getDefault().post(new SearchEvent("image/%",
-                                        SearchOperation.SearchType.CONTENT_TYPE_SEARCH, SearchEvent.UnsetType.UNSET_DRAWER));
-                                break;
-                            case R.id.nav_bar_settings:
-                                EventBus.getDefault().post(new MenuItemClickEvent(item));
-                                break;
-                            default:
-                                break;
-                        }
-                        return true;
-                    }
-                });
-    }
-
     @Override
     public void onResume() {
         super.onResume();
@@ -1369,6 +1329,21 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
             }
         }
 
+        if (bottomNavigationView != null && searchEvent != null) {
+            switch (currentSearchType) {
+                case FAVORITE_SEARCH:
+                    DisplayUtils.setBottomBarItem(bottomNavigationView, R.id.nav_bar_favorites);
+                    break;
+                case PHOTO_SEARCH:
+                    DisplayUtils.setBottomBarItem(bottomNavigationView, R.id.nav_bar_photos);
+                    break;
+
+                default:
+                    DisplayUtils.setBottomBarItem(bottomNavigationView, -1);
+                    break;
+            }
+        }
+
         Runnable switchViewsRunnable = new Runnable() {
             @Override
             public void run() {
@@ -1458,6 +1433,8 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
         } else {
             new Handler(Looper.getMainLooper()).post(switchViewsRunnable);
         }
+
+        searchEvent = null;
     }
 
     private void setTitle(@StringRes int title) {

+ 85 - 0
src/main/java/com/owncloud/android/utils/DisplayUtils.java

@@ -28,6 +28,7 @@ import android.accounts.Account;
 import android.annotation.TargetApi;
 import android.app.Activity;
 import android.content.Context;
+import android.content.Intent;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.graphics.Point;
@@ -37,6 +38,8 @@ import android.graphics.drawable.PictureDrawable;
 import android.net.Uri;
 import android.os.Build;
 import android.support.annotation.ColorInt;
+import android.support.annotation.NonNull;
+import android.support.design.widget.BottomNavigationView;
 import android.support.design.widget.Snackbar;
 import android.support.v4.app.FragmentActivity;
 import android.support.v4.content.ContextCompat;
@@ -44,6 +47,8 @@ import android.text.Spannable;
 import android.text.SpannableStringBuilder;
 import android.text.format.DateUtils;
 import android.text.style.StyleSpan;
+import android.view.Menu;
+import android.view.MenuItem;
 import android.view.View;
 import android.widget.ImageButton;
 import android.widget.ProgressBar;
@@ -63,11 +68,19 @@ import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.datamodel.ThumbnailsCacheManager;
 import com.owncloud.android.lib.common.OwnCloudAccount;
 import com.owncloud.android.lib.common.utils.Log_OC;
+import com.owncloud.android.lib.resources.files.SearchOperation;
 import com.owncloud.android.ui.TextDrawable;
+import com.owncloud.android.ui.activity.FileDisplayActivity;
 import com.owncloud.android.ui.activity.ToolbarActivity;
+import com.owncloud.android.ui.events.MenuItemClickEvent;
+import com.owncloud.android.ui.events.SearchEvent;
+import com.owncloud.android.ui.fragment.OCFileListFragment;
 import com.owncloud.android.utils.svg.SvgDecoder;
 import com.owncloud.android.utils.svg.SvgDrawableTranscoder;
 
+import org.greenrobot.eventbus.EventBus;
+import org.parceler.Parcels;
+
 import java.io.InputStream;
 import java.math.BigDecimal;
 import java.net.IDN;
@@ -561,4 +574,76 @@ public class DisplayUtils {
                 .load(uri)
                 .into(imageView);
     }
+
+    public static void setupBottomBar(BottomNavigationView view, Resources resources, final Activity activity,
+                                      int checkedMenuItem) {
+
+        Menu menu = view.getMenu();
+
+        if (resources.getBoolean(R.bool.use_home)) {
+            menu.findItem(R.id.nav_bar_files).setTitle(resources.
+                    getString(R.string.drawer_item_home));
+            menu.findItem(R.id.nav_bar_files).setIcon(R.drawable.ic_home);
+        }
+
+        setBottomBarItem(view, checkedMenuItem);
+
+        view.setOnNavigationItemSelectedListener(
+                new BottomNavigationView.OnNavigationItemSelectedListener() {
+                    @Override
+                    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
+                        switch (item.getItemId()) {
+                            case R.id.nav_bar_files:
+                                EventBus.getDefault().post(new MenuItemClickEvent(item));
+                                if (activity != null) {
+                                    activity.invalidateOptionsMenu();
+                                }
+                                break;
+                            case R.id.nav_bar_favorites:
+                                SearchEvent favoritesEvent = new SearchEvent("",
+                                        SearchOperation.SearchType.FAVORITE_SEARCH,
+                                        SearchEvent.UnsetType.UNSET_DRAWER);
+
+                                switchToSearchFragment(activity, favoritesEvent);
+                                break;
+                            case R.id.nav_bar_photos:
+                                SearchEvent photosEvent = new SearchEvent("image/%",
+                                        SearchOperation.SearchType.CONTENT_TYPE_SEARCH,
+                                        SearchEvent.UnsetType.UNSET_DRAWER);
+
+                                switchToSearchFragment(activity, photosEvent);
+                                break;
+                            case R.id.nav_bar_settings:
+                                EventBus.getDefault().post(new MenuItemClickEvent(item));
+                                break;
+                            default:
+                                break;
+                        }
+                        return true;
+                    }
+                });
+    }
+
+    public static void setBottomBarItem(BottomNavigationView view, int checkedMenuItem) {
+        Menu menu = view.getMenu();
+
+        for (int i = 0; i < menu.size(); i++) {
+            menu.getItem(i).setChecked(false);
+        }
+
+        if (checkedMenuItem != -1) {
+            menu.findItem(checkedMenuItem).setChecked(true);
+        }
+    }
+
+    private static void switchToSearchFragment(Activity activity, SearchEvent event) {
+        if (activity instanceof FileDisplayActivity) {
+            EventBus.getDefault().post(event);
+        } else {
+            Intent recentlyAddedIntent = new Intent(activity.getBaseContext(), FileDisplayActivity.class);
+            recentlyAddedIntent.putExtra(OCFileListFragment.SEARCH_EVENT, Parcels.wrap(event));
+            recentlyAddedIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+            activity.startActivity(recentlyAddedIntent);
+        }
+    }
 }

+ 18 - 3
src/main/res/layout/activity_list_layout.xml

@@ -18,6 +18,7 @@
   License along with this program.  If not, see <http://www.gnu.org/licenses/>.
 -->
 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                                        xmlns:app="http://schemas.android.com/apk/res-auto"
                                         android:id="@+id/drawer_layout"
                                         android:layout_width="match_parent"
                                         android:layout_height="match_parent"
@@ -25,7 +26,7 @@
                                         android:fitsSystemWindows="true">
 
     <!-- The main content view -->
-    <LinearLayout
+    <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:orientation="vertical">
@@ -35,7 +36,9 @@
 
         <FrameLayout
             android:layout_width="match_parent"
-            android:layout_height="match_parent">
+            android:layout_height="match_parent"
+            android:layout_above="@+id/bottom_navigation_view"
+            android:layout_below="@+id/appbar">
 
             <android.support.v4.widget.SwipeRefreshLayout
                 android:id="@+id/swipe_containing_list"
@@ -70,7 +73,19 @@
 
         </FrameLayout>
 
-    </LinearLayout>
+        <android.support.design.widget.BottomNavigationView
+            android:id="@+id/bottom_navigation_view"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            android:visibility="gone"
+            app:itemBackground="@color/primary_button_background_color"
+            app:itemIconTint="@color/primary_button_text_color"
+            app:itemTextColor="@color/primary_button_text_color"
+            app:menu="@menu/navigation_bar_menu"/>
+
+    </RelativeLayout>
+
 
     <include
         layout="@layout/drawer"

+ 23 - 2
src/main/res/layout/contacts_preference.xml

@@ -19,6 +19,7 @@
   License along with this program. If not, see <http://www.gnu.org/licenses/>.
 -->
 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                                        xmlns:app="http://schemas.android.com/apk/res-auto"
                                         android:id="@+id/drawer_layout"
                                         android:layout_width="match_parent"
                                         android:layout_height="match_parent"
@@ -26,7 +27,7 @@
                                         android:fitsSystemWindows="true">
 
     <!-- The main content view -->
-    <LinearLayout
+    <RelativeLayout
         android:id="@+id/contacts_linear_layout"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
@@ -35,6 +36,13 @@
         <include
             layout="@layout/toolbar_standard"/>
 
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_above="@+id/bottom_navigation_view"
+            android:layout_below="@+id/appbar"
+            android:orientation="vertical">
+
         <TextView
             android:id="@+id/contacts_header_backup"
             android:layout_width="match_parent"
@@ -109,7 +117,20 @@
             android:text="@string/contacts_preference_choose_date"
             android:theme="@style/Button.Primary"/>
 
-    </LinearLayout>
+        </LinearLayout>
+
+        <android.support.design.widget.BottomNavigationView
+            android:id="@+id/bottom_navigation_view"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            android:visibility="gone"
+            app:itemBackground="@color/primary_button_background_color"
+            app:itemIconTint="@color/primary_button_text_color"
+            app:itemTextColor="@color/primary_button_text_color"
+            app:menu="@menu/navigation_bar_menu"/>
+
+    </RelativeLayout>
 
     <include
         layout="@layout/drawer"

+ 17 - 3
src/main/res/layout/folder_sync_layout.xml

@@ -20,13 +20,14 @@
 -->
 <android.support.v4.widget.DrawerLayout android:id="@+id/drawer_layout"
                                         xmlns:android="http://schemas.android.com/apk/res/android"
+                                        xmlns:app="http://schemas.android.com/apk/res-auto"
                                         android:layout_width="match_parent"
                                         android:layout_height="match_parent"
                                         android:clickable="true"
                                         android:fitsSystemWindows="true">
 
     <!-- The main content view -->
-    <LinearLayout
+    <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:orientation="vertical">
@@ -36,7 +37,9 @@
 
         <FrameLayout
             android:layout_width="match_parent"
-            android:layout_height="match_parent">
+            android:layout_height="match_parent"
+            android:layout_above="@+id/bottom_navigation_view"
+            android:layout_below="@+id/appbar">
 
             <android.support.v7.widget.RecyclerView
                 android:id="@android:id/list"
@@ -85,7 +88,18 @@
                 android:visibility="gone" />
         </FrameLayout>
 
-    </LinearLayout>
+        <android.support.design.widget.BottomNavigationView
+            android:id="@+id/bottom_navigation_view"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            android:visibility="gone"
+            app:itemBackground="@color/primary_button_background_color"
+            app:itemIconTint="@color/primary_button_text_color"
+            app:itemTextColor="@color/primary_button_text_color"
+            app:menu="@menu/navigation_bar_menu"/>
+
+    </RelativeLayout>
 
     <include
         layout="@layout/drawer"

+ 17 - 3
src/main/res/layout/notifications_layout.xml

@@ -19,6 +19,7 @@
   License along with this program.  If not, see <http://www.gnu.org/licenses/>.
 -->
 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                                        xmlns:app="http://schemas.android.com/apk/res-auto"
                                         android:id="@+id/drawer_layout"
                                         android:layout_width="match_parent"
                                         android:layout_height="match_parent"
@@ -26,7 +27,7 @@
                                         android:fitsSystemWindows="true">
 
     <!-- The main content view -->
-    <LinearLayout
+    <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:orientation="vertical">
@@ -36,7 +37,9 @@
 
         <FrameLayout
             android:layout_width="match_parent"
-            android:layout_height="match_parent">
+            android:layout_height="match_parent"
+            android:layout_above="@+id/bottom_navigation_view"
+            android:layout_below="@+id/appbar">
 
             <android.support.v4.widget.SwipeRefreshLayout
                 android:id="@+id/swipe_containing_list"
@@ -71,7 +74,18 @@
 
         </FrameLayout>
 
-    </LinearLayout>
+        <android.support.design.widget.BottomNavigationView
+            android:id="@+id/bottom_navigation_view"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            android:visibility="gone"
+            app:itemBackground="@color/primary_button_background_color"
+            app:itemIconTint="@color/primary_button_text_color"
+            app:itemTextColor="@color/primary_button_text_color"
+            app:menu="@menu/navigation_bar_menu"/>
+
+    </RelativeLayout>
 
     <include
         layout="@layout/drawer"

+ 20 - 7
src/main/res/layout/upload_list_layout.xml

@@ -17,14 +17,15 @@
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
   -->
 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/drawer_layout"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:clickable="true"
-    android:fitsSystemWindows="true">
+                                        xmlns:app="http://schemas.android.com/apk/res-auto"
+                                        android:id="@+id/drawer_layout"
+                                        android:layout_width="match_parent"
+                                        android:layout_height="match_parent"
+                                        android:clickable="true"
+                                        android:fitsSystemWindows="true">
 
     <!-- The main content view -->
-    <LinearLayout
+    <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:orientation="vertical">
@@ -37,7 +38,19 @@
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:background="@color/background_color"/>
-    </LinearLayout>
+
+        <android.support.design.widget.BottomNavigationView
+            android:id="@+id/bottom_navigation_view"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignParentBottom="true"
+            android:visibility="gone"
+            app:itemBackground="@color/primary_button_background_color"
+            app:itemIconTint="@color/primary_button_text_color"
+            app:itemTextColor="@color/primary_button_text_color"
+            app:menu="@menu/navigation_bar_menu"/>
+
+    </RelativeLayout>
 
     <include
         layout="@layout/drawer"