DrawerLayout NavigationView 实现侧滑(android MD 一)
2017-10-28 15:50
483 查看
实现侧滑的效果,采用md风格,用到的总要控件有
DrawerLayout和NavigationView
demo 下载地址
依赖MD系统库
View headerView =
mNavigationView.inflateHeaderView(R.layout.drawer_header);
public class MainActivity extends AppCompatActivity 类
setNavigationItemSelectedListener:设置NavigationView里面的菜单Item点击事件;
getHeaderView(0); 获取NavigationView的头布局,然后通过findViewById得到具体的控件;
setItemIconTintList(null); //NavigationView里面的菜单Item的icon显示自身的颜色;
NavigationView里的属性
app:headerLayout 指定相应的头布局;
app:menu 指定相应的菜单;
android:layout_gravity
可以指定左left滑出,右right滑出
android:layout_width=”100dp”
设置抽屉的宽度
header.xml
menu_drawer.xml
欢迎指点,共同进步。
demo 下载地址
DrawerLayout和NavigationView
demo 下载地址
依赖MD系统库
compile 'com.android.support:design:25.2.0' **获取Navigation Header**
View headerView =
mNavigationView.inflateHeaderView(R.layout.drawer_header);
public class MainActivity extends AppCompatActivity 类
package com.example.navigationdemo; import android.support.annotation.NonNull; import android.support.design.widget.NavigationView; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ImageView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private DrawerLayout mDrawerlayout; private NavigationView mNavigationView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mDrawerlayout = (DrawerLayout)findViewById(R.id.drawerlayout); mNavigationView = (NavigationView) findViewById(R.id.navigationview); mNavigationView.setItemIconTintList(null); //icon显示自身的颜色 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); ActionBar bar = getSupportActionBar(); bar.setHomeAsUpIndicator(R.mipmap.ic_launcher); //设置图标 bar.setDisplayHomeAsUpEnabled(true); init(); } private void init() { mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { MenuItem preItem = null; @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { if (preItem != null) { preItem.setChecked(false); } item.setChecked(true); Log.d("yw", "你点击了标题为" + item.getTitleCondensed() + "的菜单"); Toast.makeText(MainActivity.this, "你点击了标题为" + item.getTitleCondensed() + "的菜单", Toast.LENGTH_LONG).show(); mDrawerlayout.closeDrawers(); preItem = item; //保存一下上一次点击的item return false; } }); //获取navigationView的头部布局和里面的控件 View headerView = mNavigationView.getHeaderView(0); //有些版本不兼容,headerView == null // 可以用这个获取 View headerView = mNavigationView.inflateHeaderView(R.layout.drawer_header); ImageView avatar = (ImageView) headerView.findViewById(R.id.avatar); avatar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d("yw", "你点击了头像"); mDrawerlayout.closeDrawers(); Toast.makeText(MainActivity.this, "你点击了头像", Toast.LENGTH_SHORT).show(); } }); } @Override public boolean onOptionsItemSelected(MenuItem item) { Log.d("yw", item + ""); switch (item.getItemId()) { case android.R.id.home: mDrawerlayout.openDrawer(GravityCompat.START); break; default: break; } return super.onOptionsItemSelected(item); } }
setNavigationItemSelectedListener:设置NavigationView里面的菜单Item点击事件;
getHeaderView(0); 获取NavigationView的头布局,然后通过findViewById得到具体的控件;
setItemIconTintList(null); //NavigationView里面的菜单Item的icon显示自身的颜色;
activity_main.xml 布局文件
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout android:id="@+id/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:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.navigationdemo.MainActivity"> <LinearLayout android:orientation="vertical" android:id="@+id/layout_content" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:text="我是内容" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <!-- android:layout_marginRight="100dp" android:layout_width="100dp" 设置抽屉的宽度--> <android.support.design.widget.NavigationView android:fitsSystemWindows="true" android:layout_gravity="left" android:id="@+id/navigationview" app:headerLayout="@layout/header" app:menu="@menu/drawer_menu" android:layout_marginRight="100dp" android:layout_width="match_parent" android:layout_height="match_parent" /> </android.support.v4.widget.DrawerLayout>
NavigationView里的属性
app:headerLayout 指定相应的头布局;
app:menu 指定相应的菜单;
android:layout_gravity
可以指定左left滑出,右right滑出
android:layout_width=”100dp”
设置抽屉的宽度
header.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:background="@color/colorAccent" android:paddingTop="20dp" android:paddingBottom="20dp" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/avatar" android:layout_gravity="center" android:src="@mipmap/ic_launcher" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:text="jack_yang" android:gravity="center" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
menu_drawer.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="@mipmap/ic_launcher" android:title="Home"/> <item android:id="@+id/nav_messages" android:icon="@mipmap/ic_launcher" android:title="Messages"/> <item android:id="@+id/nav_friends" android:icon="@mipmap/ic_launcher" android:title="Friends"/> <item android:id="@+id/nav_discussion" android:icon="@mipmap/ic_launcher" android:title="Discussion"/> </group> <item android:title="Sub items"> <menu> <item android:icon="@mipmap/ic_launcher" android:checkable="true" android:title="Sub item 1"/> <item android:icon="@mipmap/ic_launcher" android:checkable="true" android:title="Sub item 2"/> </menu> </item> </menu>
欢迎指点,共同进步。
demo 下载地址
相关文章推荐
- DrawerLayout NavigationView 实现侧滑(Android MD风格一)
- Android DrawerLayout+NavigationView布局实现左右两边侧滑菜单
- Android中DrawerLayout+Toolbar实现侧滑效果[DrawerLayout+ToolBar+NavigationView]
- Android DrawerLayout+ToolBar+NavigationView实现侧滑菜单效果,沉浸式状态栏
- Android实现侧滑抽屉菜单(DrawerLayout+NavigationView+toolbar)
- Android DrawerLayout+Toolbar+NavigationView(实现侧拉侧滑效果)
- Android--NavigationView+DrawerLayout实现侧滑(仿QQ)
- 【DrawerLayout+NavigationView】android侧滑菜单实现
- Android 之 Material Design(三)—DrawerLayout+NavigationView+Toolbar(点击icon打开关闭侧滑菜单)
- Android-NavigationView+DrawerLayout实现抽屉菜单
- DrawerLayout+NavigationView实现侧滑菜单
- Material Design之NavigationView和DrawerLayout实现侧滑菜单栏
- Android中利用DrawerLayout+NavigationView实现滑动菜单效果
- MaterialDesign之NavigationView和DrawerLayout实现侧滑菜单栏(抽屉)
- Material Design设计之NavigationView+DrawerLayout主流侧滑实现
- Material Design之NavigationView和DrawerLayout实现侧滑菜单栏
- android 使用ViewDragHelper轻松实现DrawerLayout和SlidMenu侧滑效果
- NavigationView+Drawerlayout+Toolbar实现侧滑菜单
- DrawerLayout + NavigationView实现侧滑菜单
- NavigationView+DrawerLayout实现侧滑栏效果