效果圖
添加依賴庫
(要是高版本的Android Studio,則已經(jīng)為我們自動添加了所需的依賴庫)
dependencies {compile fileTree(
dir:
'libs', include: [
'*.jar'])compile
'com.android.support:appcompat-v7:22.2.1'compile
'com.android.support:design:22.2.1'
}
創(chuàng)建菜單項
nav_menu.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/home"android:title="Home"android:icon="@drawable/ic_home"/><item
android:id="@+id/settings"android:title="Settings"android:icon="@drawable/ic_setting"/><item
android:id="@+id/trash"android:title="Trash"android:icon="@drawable/ic_trash"/><item
android:id="@+id/logout"android:title="Logout"android:icon="@drawable/ic_exit"/></group>
</menu>
創(chuàng)建布局
nav_header.xml
<?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="190dp"android:paddingTop="20dp"android:paddingBottom="20dp"android:background="@color/colorPrimary"android:orientation="vertical"><ImageView
android:id="@+id/image_view"android:layout_width="wrap_content"android:layout_height="0dp"android:layout_weight="1"android:src="@drawable/ic_person"android:layout_gravity="center"/><TextView
android:id="@+id/tv_email"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="1234563278@126.com"android:layout_gravity="center"android:textSize="20sp"android:textColor="@color/White"/></LinearLayout>
nav_menu與nav_header分別為NavigationView中的頭部與菜單項。記得NavigationView必須以DrawerLayout為父容器
content_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><TextView
android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Navigation Drawer"android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:textSize="25sp"/></RelativeLayout>
main.xml
<?xml version=
"1.0" encoding=
"utf-8"?><android
.support.v4
.widget.DrawerLayoutxmlns: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
.support.design.widget.CoordinatorLayoutandroid:layout_width=
"match_parent"android:layout_height=
"match_parent"><android
.support.v7
.widget.Toolbarandroid:id=
"@+id/tool_bar"android:layout_width=
"match_parent"android:layout_height=
"?attr/actionBarSize"android:background=
"@color/colorPrimary"></android
.support.v7
.widget.Toolbar></android
.support.design.widget.CoordinatorLayout><android
.support.design.widget.NavigationViewandroid:id=
"@+id/navigation_view"android:layout_width=
"wrap_content"android:layout_height=
"match_parent"app:headerLayout=
"@layout/nav_header"app:menu=
"@menu/nav_menu"android:layout_gravity=
"start"></android
.support.design.widget.NavigationView></android
.support.v4
.widget.DrawerLayout>
界面
package
com.example.demo.navigationviewtestimport android
.os.Bundle
import android
.support.design.widget.NavigationView
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.TextView
import android
.widget.Toastpublic class MainActivity extends AppCompatActivity {private DrawerLayout mDrawerLayoutprivate ActionBarDrawerToggle mActionBarDrawerToggleprivate Toolbar mToolbarprivate NavigationView mNavigationView@Overrideprotected void onCreate(Bundle savedInstanceState) {super
.onCreate(savedInstanceState)setContentView(R
.layout.main)mDrawerLayout = (DrawerLayout) findViewById(R
.id.drawer_layout)mToolbar = (Toolbar) findViewById(R
.id.tool_bar)mNavigationView = (NavigationView) findViewById(R
.id.navigation_view)mToolbar
.setTitle(
"NavigationView")setSupportActionBar(mToolbar)mActionBarDrawerToggle = new ActionBarDrawerToggle(this,mDrawerLayout,mToolbar,R
.string.open,R
.string.close){@Overridepublic void onDrawerOpened(View drawerView) {super
.onDrawerOpened(drawerView)}@Overridepublic void onDrawerClosed(View drawerView) {super
.onDrawerClosed(drawerView)}}mActionBarDrawerToggle
.syncState()mDrawerLayout
.setDrawerListener(mActionBarDrawerToggle)mNavigationView
.setNavigationItemSelectedListener(new NavigationView
.OnNavigationItemSelectedListener() {@Overridepublic boolean onNavigationItemSelected(MenuItem menuItem) {int id = menuItem
.getItemId()switch (id) {case R
.id.home:Toast
.makeText(getApplicationContext(),
"Home", Toast
.LENGTH_SHORT)
.show()mDrawerLayout
.closeDrawers()
breakcase R
.id.settings:Toast
.makeText(getApplicationContext(),
"Settings", Toast
.LENGTH_SHORT)
.show()mDrawerLayout
.closeDrawers()
breakcase R
.id.trash:Toast
.makeText(getApplicationContext(),
"Trash", Toast
.LENGTH_SHORT)
.show()mDrawerLayout
.closeDrawers()
breakcase R
.id.logout:Toast
.makeText(getApplicationContext(),
"Logout", Toast
.LENGTH_SHORT)
.show()mDrawerLayout
.closeDrawers()
break}return true}})TextView tv_email = (TextView)findViewById(R
.id.tv_email)tv_email
.setText(
"http://blog.csdn.net/wiseclown")}}
注意
compile 'com.android.support:design:23.2.0',則可以使用addDrawerListener來替代setDrawerListener,以及NavigationView中添加了getHeaderView( )方法來獲取Header view。
源碼地址:https://github.com/xkck/NavigationViewTest
參考文章
[1]http://blog.csdn.net/lmj623565791/article/details/46405409
[3]http://www.jianshu.com/p/76e30f87a4ed
[2]http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0608/3011.html
總結(jié)
以上是生活随笔為你收集整理的Android Design新特性-NavigationView实现抽屉式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。