Andorid - Material Design之Naviga

作者: Allens_Jiang | 来源:发表于2018-01-02 18:15 被阅读151次
    老婆保佑,代码无BUG

    前言

    Material Design 系列第五篇 NavigationView


    目录

    • 一:使用
        1. XML
        1. heard_layout(头部的布局)
        1. activity_main_drawer(侧边栏的选项)
        1. Activity 代码
    • 二: Toolbar 显示下上面

    Untitled.gif

    一:使用

    1. XML

    <?xml version="1.0" encoding="utf-8"?>
    <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">
    
      <LinearLayout
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical">
    
          <android.support.v7.widget.Toolbar
              android:id="@+id/toolbar"
              android:layout_width="match_parent"
              android:layout_height="?attr/actionBarSize"
              android:background="@color/colorPrimary"
              app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
    
          <TextView
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="主页面" />
      </LinearLayout>
    
    
      <!--heard_layout 头部信息 -->
      <!--menu 下面的列表-->
      <android.support.design.widget.NavigationView
          android:id="@+id/navigation_view"
          android:layout_width="wrap_content"
          android:layout_height="match_parent"
          android:layout_gravity="left"
          android:fitsSystemWindows="true"
          app:headerLayout="@layout/heard_layout"
          app:menu="@menu/activity_main_drawer" />
    
    </android.support.v4.widget.DrawerLayout>
    

    2. heard_layout

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 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="176dp"
        android:background="@drawable/side_nav_bar"
        android:gravity="bottom"
        android:orientation="vertical"
        android:paddingBottom="16dp"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:paddingTop="16dp"
        android:theme="@style/ThemeOverlay.AppCompat.Dark">
    
        <ImageView
            android:id="@+id/imageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingTop="16dp"
            app:srcCompat="@mipmap/ic_launcher_round" />
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingTop="16dp"
            android:text="Android Studio"
            android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
    
        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="android.studio@android.com" />
    
    </LinearLayout>
    
    

    3. activity_main_drawer

    屏幕快照 2018-01-02 下午6.18.05.png
    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        tools:showIn="navigation_view">
    
        <group android:checkableBehavior="single">
            <item
                android:id="@+id/nav_camera"
                android:icon="@drawable/ic_menu_camera"
                android:title="Import" />
            <item
                android:id="@+id/nav_gallery"
                android:icon="@drawable/ic_menu_gallery"
                android:title="Gallery" />
            <item
                android:id="@+id/nav_slideshow"
                android:icon="@drawable/ic_menu_slideshow"
                android:title="Slideshow" />
            <item
                android:id="@+id/nav_manage"
                android:icon="@drawable/ic_menu_manage"
                android:title="Tools" />
        </group>
    
        <item android:title="Communicate">
            <menu>
                <item
                    android:id="@+id/nav_share"
                    android:icon="@drawable/ic_menu_share"
                    android:title="Share" />
                <item
                    android:id="@+id/nav_send"
                    android:icon="@drawable/ic_menu_send"
                    android:title="Send" />
            </menu>
        </item>
    
    </menu>
    
    

    4. Activity 代码

    package com.allens.designdemo;
    
    import android.os.Bundle;
    import android.support.annotation.NonNull;
    import android.support.annotation.Nullable;
    import android.support.design.widget.NavigationView;
    import android.support.v4.view.GravityCompat;
    import android.support.v4.widget.DrawerLayout;
    import android.support.v7.app.ActionBarDrawerToggle;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.ImageView;
    import android.widget.Toast;
    
    /**
     * 描述:
     * <p>
     * Created by allens on 2018/1/2.
     */
    
    public class NavigationViewAct extends AppCompatActivity {
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_navigation);
    
    
            /***
             * 设置ToolBar
             */
            Toolbar toolbar = findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
            //显示返回按钮
            getSupportActionBar().setHomeButtonEnabled(true);
            //设置返回按钮可点击
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            //设置返回按钮图标
            toolbar.setNavigationIcon(R.mipmap.ic_launcher);
            //去掉原标题
            getSupportActionBar().setDisplayShowTitleEnabled(false);
            //设置LOGO
            toolbar.setLogo(R.mipmap.ic_launcher);
            //设置主标题
            toolbar.setTitle("Title");
            //设置副标题
            toolbar.setSubtitle("SubTitle");
            //设置最左边那三条杠,侧滑按钮加入动画
            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                    this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
            drawer.addDrawerListener(toggle);
            toggle.syncState();
    
    
            /**
             * 初始化NavigationView
             */
            NavigationView navigationView = findViewById(R.id.navigation_view);
            View view = navigationView.getHeaderView(0);
            //通过view的findViewById 获取具体某个空间
            ImageView hearImg = view.findViewById(R.id.imageView);
            hearImg.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(NavigationViewAct.this, "点击头部 IMG", Toast.LENGTH_SHORT).show();
                }
            });
    
            
            //NavigationView 选项选择
            navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                    int id = item.getItemId();
                    if (id == R.id.nav_camera) {
                    } else if (id == R.id.nav_gallery) {
    
                    } else if (id == R.id.nav_slideshow) {
    
                    } else if (id == R.id.nav_manage) {
    
                    } else if (id == R.id.nav_share) {
    
                    } else if (id == R.id.nav_send) {
    
                    }
    
                    //自动隐藏
                    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
                    drawer.closeDrawer(GravityCompat.START);
    
                    return true;
                }
            });
        }
    }
    

    二: Toolbar 显示下上面

    Untitled.gif
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools">
    
    
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorPrimary"
            app:theme="@style/ThemeOverlay.AppCompat.Dark" />
    
        <android.support.v4.widget.DrawerLayout
            android:id="@+id/drawer_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            tools:openDrawer="start">
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="主页面" />
    
            </LinearLayout>
    
    
            <android.support.design.widget.NavigationView
                android:id="@+id/navigation_view"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_gravity="left"
                android:fitsSystemWindows="true"
                app:headerLayout="@layout/heard_layout"
                app:menu="@menu/activity_main_drawer" />
    
        </android.support.v4.widget.DrawerLayout>
    
    
    </LinearLayout>
    

    源码地址

    点击进入GitHub

    最后

    全部系列

    Andorid - Material Design之Snackbar

    Andorid - Material Design之TextInputLayout

    Andorid - Material Design之FloatingActionButton

    Andorid - Material Design之TabLayout

    Andorid - Material Design之NavigationView和DrawerLayout

    Andorid - Material Design之CoordinatorLayout

    相关文章

      网友评论

        本文标题:Andorid - Material Design之Naviga

        本文链接:https://www.haomeiwen.com/subject/kecqnxtx.html