Android Material Design: NavigationView抽屉导航菜单

简介: Android Material Design: NavigationView抽屉导航菜单之前我写了一篇关于实现Android抽屉导航菜单栏的文章《基于Android官方DrawerLayout实现抽屉导航菜单》,文章链接地址:http://blog.csdn.net/zhangphil/article/details/48710453在最新的Android Material Design中引入了NavigationView增强DrawerLayout。

Android Material Design: NavigationView抽屉导航菜单

之前我写了一篇关于实现Android抽屉导航菜单栏的文章《基于Android官方DrawerLayout实现抽屉导航菜单》,文章链接地址:http://blog.csdn.net/zhangphil/article/details/48710453
在最新的Android Material Design中引入了NavigationView增强DrawerLayout。也可以认为是谷歌官方Android SDK对抽屉导航菜单栏进一步代码规范化。
效果如图所示:


测试的主Activity MainActivity.java :

package zhangphil.materialdesign;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

	private DrawerLayout drawerLayout;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		NavigationView navigationView = (NavigationView) findViewById(R.id.navigationView);
		drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
		navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
			@Override
			public boolean onNavigationItemSelected(MenuItem menuItem) {
				menuItem.setChecked(true);

				// 关闭
				drawerLayout.closeDrawers();

				String t = menuItem.getTitle() + "";
				Toast.makeText(getApplicationContext(), t, Toast.LENGTH_SHORT).show();

				return true;
			}
		});

		TextView text1 = (TextView) findViewById(android.R.id.text1);
		text1.setText("头部1");
		text1.setTextColor(Color.RED);
		TextView text2 = (TextView) findViewById(android.R.id.text2);
		text2.setText("头部2");
		text2.setTextColor(Color.BLUE);

		Button button = (Button) findViewById(R.id.button);
		button.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				// 由Button也可以打开
				// 从左边打开
				drawerLayout.openDrawer(GravityCompat.START);
			}
		});
	}

	// @Override
	// public boolean onOptionsItemSelected(MenuItem item) {
	// if (item.getItemId() == android.R.id.home){
	//
	// //打开
	// drawerLayout.openDrawer(GravityCompat.START);
	// }
	//
	// return super.onOptionsItemSelected(item);
	// }
}

MainActivity.java需要的布局文件:activity_main.xml文件:

<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/drawerLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="打开 " />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="主界面"
            android:textSize="50sp" />
    </LinearLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/navigationView"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:fitsSystemWindows="true"
        app:headerLayout="@android:layout/simple_list_item_2"
        app:itemIconTint="#ff5252"
        app:itemTextColor="#42a5f5"
        app:menu="@menu/main" >
    </android.support.design.widget.NavigationView>

</android.support.v4.widget.DrawerLayout>


activity_main.xml用到的的菜单布局文件main.xml代码:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <item
        android:checkableBehavior="single"
        android:title="第一组菜单">
        <item
            android:id="@+id/open"
            android:icon="@drawable/ic_launcher"
            android:title="打开"/>
        <item
            android:id="@+id/close"
            android:icon="@drawable/ic_launcher"
            android:title="关闭"/>
        <item
            android:id="@+id/create"
            android:icon="@drawable/ic_launcher"
            android:title="新建"/>
    </item>
    <item android:title="第二组菜单">
        <menu>
            <item
                android:id="@+id/exit"
                android:icon="@drawable/ic_launcher"
                android:title="退出"/>
            <item
                android:id="@+id/about"
                android:icon="@drawable/ic_launcher"
                android:title="关于"/>
        </menu>
    </item>

</menu>


(1)app:headerLayout表示要在弹出的抽屉导航菜单的顶部(头部)加载的布局。
(2)app:itemIconTint设置抽屉导航菜单中图标icon的颜色。
(3)app:itemTextColor设置抽屉导航菜单中的字体颜色。
(4)app:menu设置加载的菜单布局文件。


相关文章
|
3月前
|
XML Android开发 UED
💥Android UI设计新风尚!掌握Material Design精髓,让你的界面颜值爆表!🎨
随着移动应用市场的蓬勃发展,用户对界面设计的要求日益提高。为此,掌握由Google推出的Material Design设计语言成为提升应用颜值和用户体验的关键。本文将带你深入了解Material Design的核心原则,如真实感、统一性和创新性,并通过丰富的组件库及示例代码,助你轻松打造美观且一致的应用界面。无论是色彩搭配还是动画效果,Material Design都能为你的Android应用增添无限魅力。
81 1
|
5月前
|
XML Android开发 UED
💥Android UI设计新风尚!掌握Material Design精髓,让你的界面颜值爆表!🎨
【7月更文挑战第28天】随着移动应用市场的发展,用户对界面设计的要求不断提高。Material Design是由Google推出的设计语言,强调真实感、统一性和创新性,通过模拟纸张和墨水的物理属性创造沉浸式体验。它注重色彩、排版、图标和布局的一致性,确保跨设备的统一视觉风格。Android Studio提供了丰富的Material Design组件库,如按钮、卡片等,易于使用且美观。
167 1
|
7月前
|
Android开发
[Android]DrawerLayout滑动菜单+NavigationView
[Android]DrawerLayout滑动菜单+NavigationView
82 0
|
Android开发 开发者 UED
Android Design Support Library初探-更新中
Android Design Support Library初探-更新中
102 0
|
XML Java 开发工具
Android5.0新特性-Material Design
Android5.0新特性-Material Design
96 0
|
开发工具 Android开发
Android Support Design Library之FloatingActionButton(二)
Android Support Design Library之FloatingActionButton(二)
84 0
Android Support Design Library之FloatingActionButton(二)
|
Android开发
Android Support Design Library之FloatingActionButton(一)
Android Support Design Library之FloatingActionButton(一)
88 0
Android Support Design Library之FloatingActionButton(一)
|
数据安全/隐私保护 Android开发 容器
Android Support Design Library之TextInputLayout(二)
Android Support Design Library之TextInputLayout(二)
143 0
Android Support Design Library之TextInputLayout(二)
|
XML 算法 Android开发
Android Support Design Library之TextInputLayout(一)
Android Support Design Library之TextInputLayout(一)
139 0
Android Support Design Library之TextInputLayout(一)
|
Android开发
Android Support Design Library之TabLayout
Android Support Design Library之TabLayout
158 0
Android Support Design Library之TabLayout