MaterialDesign 之 DrawerLayout
Posted yanglanwan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MaterialDesign 之 DrawerLayout相关的知识,希望对你有一定的参考价值。
DrawerLayout 基本使用
我们先来看一下布局
<android.support.v4.widget.DrawerLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/dl"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.design.widget.TabLayout android:layout_height="50dp" android:layout_width="match_parent" android:id="@+id/tb"> </android.support.design.widget.TabLayout> <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/vp"> </android.support.v4.view.ViewPager> </LinearLayout> <LinearLayout android:layout_width="100dp" android:layout_height="match_parent" android:layout_gravity="start" android:orientation="horizontal" android:background="#ffccff"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="aaa"/> </LinearLayout> </android.support.v4.widget.DrawerLayout>
在 DrawerLayout 里包括两个子布局 第一个是主页布局 第二个是侧滑布局
注意:
第一个布局可以是任意布局 但必须设置成 全屏显示,
第二个布局可以任意宽度 但必须设置 android:layout_gravity="start" Start 表示从左边显示 End 表示从右边显示
然后重启一下是不是可以从左边滑出菜单来了,就是这么 easy
DrawerLayout 和 ToolBar 的绑定
首先我们要在上面的布局里 DrawerLayout 上填加一个布局 ToolBar。
<android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?android:attr/actionBarSize" android:background="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways"/> </android.support.design.widget.AppBarLayout>
第一步初始化 ToolBar 控件
toolbar = (Toolbar) findViewById(R.id.toolbar);
dl = (DrawerLayout) findViewById(R.id.dl);
setSupportActionBar(toolbar);
第二步显示箭头
在这的时候就可以看到我们的图标了,
ActionBar actionBar = getSupportActionBar();
//设置当前的控件可用
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayShowTitleEnabled(true);
第三步 关联 DrawerLayout
//第一个参数 activity 第二个参数 drawlayout
//第三个参数 Toolbar 第四个和第五个是打开和关闭的文字 toggle = new ActionBarDrawerToggle(this, dl, toolbar,R.string.aa, R.string.bb);
//该方法会自动和 ToolBar 关联 toggle.syncState();
第四部设置监听(给我们的 DrawerLayout 设置监听)
dl.addDrawerListener(new DrawerLayout.DrawerListener() @Override public void onDrawerSlide (View drawerView,float slideOffset) toggle.onDrawerSlide(drawerView, slideOffset); @Override public void onDrawerOpened (View drawerView) toggle.onDrawerOpened(drawerView); @Override public void onDrawerClosed (View drawerView) toggle.onDrawerClosed(drawerView); @Override public void onDrawerStateChanged ( int newState) toggle.onDrawerStateChanged(newState); );
第五部 响应事件
@Override
public boolean onOptionsItemSelected(MenuItem item) return toggle.onOptionsItemSelected(item);
以上是关于MaterialDesign 之 DrawerLayout的主要内容,如果未能解决你的问题,请参考以下文章
Prism+MaterialDesign+EntityFramework Core+Postgresql WPF开发总结 之 基础篇
MaterialDesign ComboBox 箭头调整大小和更改颜色 WPF
Material Design之RecyclerView的使用