Android Design Support Library——Navigation View,androidnavigation

來源:互聯網
上載者:User

Android Design Support Library——Navigation View,androidnavigation

前沿

  Android 從5.0開始引入了Material design元素的設計,這種新的設計語言讓整個安卓的使用者體驗煥然一新,google在Android Design Support Library中封裝了一些重要的material design控制項,在這之前其實github上也已經出現了許多各種各樣的material design 控制項,只不過現在google把有些控制項標準化了,注意這個Android Design Support Library和Android Support Library是有區別的,Android Support Library 只是支援了一些基本控制項的封裝,而Android Design Support Library主要是一些Material design特效的實現,Android Design Support Library包括以下八種控制項:

  Navigation View——抽屜導航

  TextInputLayout——EditText懸浮標籤

  Floating Action Button——懸浮操作按鈕

  Snackbar——提示(類似Toast)

  TabLayout——選項卡

  CoordinatorLayout——滾動控制

  CollapsingToolbarLayout——可摺疊的Toolbar(Google+、photos中的效果)

  AppBarLayout——容器AppBar

  本文分章對以上控制項主要做使用方式介紹,暫不分析源碼。首先看Navigation View

  Navigation View——抽屜導航

  非常實用的一種抽屜導航效果,支援直接通過菜單資源檔直接產生導航標籤,實現起來也非常簡單,效果如所示:

  

  使用步驟:

  (1)app的build.gradle中引入design包本文design包版本以23.1.1為例

dependencies {    compile 'com.android.support:design:23.1.1'}

  (2)xml布局檔案(activity_main.xml)和SlideMenu一樣需要使用到DrawerLayout。

<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"    android:fitsSystemWindows="true">    <include layout="@layout/include_list_viewpager" /><!-- 展示內容地區的布局-->    <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"        app:headerLayout="@layout/nav_header"        app:menu="@menu/drawer_view" /></android.support.v4.widget.DrawerLayout>

  兩個重要的屬性

  app:headerLayout ——導航頭布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="192dp" android:background="?attr/colorPrimaryDark" android:gravity="bottom" android:orientation="vertical" android:padding="16dp" android:theme="@style/ThemeOverlay.AppCompat.Dark"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Username" android:textAppearance="@style/TextAppearance.AppCompat.Body1" /></LinearLayout>

  drawer_view.xml(重點是看如何?分組的)

<?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/nav_home"            android:icon="@drawable/ic_dashboard"            android:title="Home" />        <item            android:id="@+id/nav_messages"            android:icon="@drawable/ic_event"            android:title="Messages" />        <item            android:id="@+id/nav_friends"            android:icon="@drawable/ic_headset"            android:title="Friends" />        <item            android:id="@+id/nav_discussion"            android:icon="@drawable/ic_forum"            android:title="Discussion" />    </group>    <item android:title="Sub items">        <menu>            <item                android:icon="@drawable/ic_dashboard"                android:title="Sub item 1" />            <item                android:icon="@drawable/ic_forum"                android:title="Sub item 2" />        </menu>    </item></menu>

  (2)在代碼中聲明使用

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);        if (navigationView != null) {            navigationView.setNavigationItemSelectedListener(                new NavigationView.OnNavigationItemSelectedListener() {                    @Override                    public boolean onNavigationItemSelected(MenuItem menuItem) {                        menuItem.setChecked(true);                        mDrawerLayout.closeDrawers();                        return true;                    }                });        }

  在onNavigationItemSelected()方法中就可以擷取導覽功能表中的每個Item進而實現相應的功能了。

  擴充:如果你想讓你的導覽功能表在status bar 上也顯示需要進行如下設定主要針對5.0及以上版本

  ../valuse-v21/styles.xml

<resources>    <style name="Theme.DesignDemo" parent="Base.Theme.DesignDemo">        <item name="android:windowDrawsSystemBarBackgrounds">true</item>        <item name="android:statusBarColor">@android:color/transparent</item>    </style></resources>

  同時在DrawerLayout中加入如下屬性

android:fitsSystemWindows="true"

  如果你感覺Navigation View還不夠強大,可以看看MaterialDrawer,串連如下:https://github.com/mikepenz/MaterialDrawer

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.