DrawerLayout 使用
来源:互联网 发布:手机号码 java正则式 编辑:程序博客网 时间:2024/06/05 18:25
1. 引用库
compile ‘com.android.support:support-v4:23.3.0’
2. DrawerLayout
DrawerLayout 是谷歌官方出的侧滑栏菜单。
侧滑菜单可以根据手势展开与隐藏(drawerLayout自身特性),主内容区的内容可以随着菜单的点击而变化(这需要使用者自己实现)。
2.1DrawerLayout 使用
1.drawerLayout其实是一个布局控件,跟LinearLayout等控件是一种东西,但是drawerLayout带有滑动的功能。只要按照drawerLayout的规定布局方式写完布局,就能有侧滑的效果。
注意:
- 主内容区的布局代码要放在侧滑菜单布局的前面,这可以帮助DrawerLayout判断谁是侧滑菜单,谁是主内容区;
- 侧滑菜单的部分的布局(这里是ListView)可以设置layout_gravity属性,他表示侧滑菜单是在左边还是右边。
2. 侧滑菜单可以自己写布局,也可以使用NavigationView 使用NavigationView 的话,其中 android:layout_gravity="start" app:headerLayout="@layout/navigation_header" app:menu="@menu/menu_drawer"
app:headerLayout 是侧滑栏中标题 部分。
app:menu 是侧滑栏中菜单部分。
java代码:
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mActoinBarDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close); mActoinBarDrawerToggle.syncState(); mDrawerLayout.addDrawerListener(mActoinBarDrawerToggle);
布局文件代码
<?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:context="com.lq.materialdesigntest.RecyclerToolBarActivity"> <android.support.design.widget.CoordinatorLayout android:id="@+id/maincontent" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/AppTheme.PopupOverlay" /> <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" /> </android.support.design.widget.AppBarLayout> <include layout="@layout/content_materialdesign" /> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin" android:src="@android:drawable/ic_dialog_email" /> </android.support.design.widget.CoordinatorLayout> <android.support.design.widget.NavigationView android:id="@+id/navigation_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" app:headerLayout="@layout/navigation_header" app:menu="@menu/menu_drawer"> </android.support.design.widget.NavigationView></android.support.v4.widget.DrawerLayout>
2.2 DrawLayout 两种效果
效果一和效果二的区别 drawerLayout 跟 ActionBar 的位置区别,
效果一会覆盖 ActionBar,
效果二显示在ActionBar 下方.
2.2.1 有Toolbar
NoActionBarAppTheme: 适用使用 ToolBar 来代替 ActionBar 的Activity
参考以上代码。
2.2.2 没有toolBar
AppTheme :适用在使用 ActionBar上的 Activity.
注意代码:
1.布局中没有toolbar 了
2.代码中加actionbar
drawerLayout= (DrawerLayout) findViewById(R.id.drawer); getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); ActionBarDrawerToggle actionBarDrawerToggle=new ActionBarDrawerToggle(this,drawerLayout,R.string.open_string,R.string.close_string); actionBarDrawerToggle.syncState(); drawerLayout.setDrawerListener(actionBarDrawerToggle);
注意右上角的 汉堡包和返回按钮操作代码如下:
在 Activity onOptionsItemSelected 方法 int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == android.R.id.home) { if( drawerLayout.isDrawerOpen(GravityCompat.START) ){ drawerLayout.closeDrawers(); }else{ drawerLayout.openDrawer(GravityCompat.START); } return true; } return super.onOptionsItemSelected(item);
2.NavigationView
NavigationView 一般配合DrawerLayout
private void setupDrawerContent(NavigationView navigationView) {
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem item) {
switch (item.getItemId()) { case R.id.navigation_item_add: mViewPager.setCurrentItem(0); break; case R.id.navigation_item_blog: mViewPager.setCurrentItem(1); break; case R.id.navigation_item_about: mViewPager.setCurrentItem(2); break; default: break; } item.setChecked(true); mDrawerLayout.closeDrawers(); return true; } });}
参考链接
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0925/1713.html
http://www.jianshu.com/p/3fe2acac0ddb
我的github demo地址:
https://github.com/lengqi19860101/MaterialDesignPractice.git
- DrawerLayout 使用
- DrawerLayout 使用
- DrawerLayout使用
- DrawerLayout使用
- DrawerLayout使用
- drawerlayout使用
- DrawerLayout的基本使用
- Android - DrawerLayout的使用
- DrawerLayout的基本使用
- DrawerLayout控件的使用
- 学习使用DrawerLayout
- Android DrawerLayout的使用
- DrawerLayout的使用例子
- DrawerLayout使用一二事
- DrawerLayout的使用
- DrawerLayout的使用
- DrawerLayout的使用
- Android DrawerLayout的使用
- 安卓实现圆角头像,已封装成工具类,方便使用
- LeetCode-278.First Bad Version
- Walker之注册页面的实现
- Unity发布Android新手教学 (小白都能看懂的教学 )
- 移动App统计指标汇总
- DrawerLayout 使用
- 【java并发】一个线程的内心独白 超赞!!!
- JS设计模式之代理模式
- autoit的基础知识
- windows使用protobuf
- 编译64位geos库的经验总结
- java 集合 List 学习
- Leetcode题解(Python): 7. Reverse Integer
- mysql thread入门分析