Android官方侧滑菜单
2016-07-11 16:00
716 查看
布局:
<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/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="如果DrawerLayout中除NavigationView外没有其它布局,则点击主界面的任何部分都不会收回侧边栏" android:textSize="16sp" /> <android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" app:headerLayout="@layout/nav_header" app:menu="@menu/drawer_view" /> </android.support.v4.widget.DrawerLayout>
策划菜单的头部
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="192dp" android:background="?attr/colorPrimaryDark" android:gravity="bottom" android:orientation="vertical" android:padding="16dp" android:theme="@style/ThemeOverlay.AppCompat.Dark"> <android.support.v7.widget.AppCompatImageView android:id="@+id/head_iv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="20dp" android:src="@drawable/mingyi" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="MingYi" android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> </LinearLayout>
侧滑菜单的菜单选项
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:checkableBehavior="single"> <item android:id="@+id/nav_home" android:icon="@drawable/ic_dashboard" android:title="主页" /> <item android:id="@+id/nav_messages" android:icon="@drawable/ic_event" android:title="日历" /> <item android:id="@+id/nav_friends" android:icon="@drawable/ic_headset" android:title="音乐" /> <item android:id="@+id/nav_discussion" android:icon="@drawable/ic_forum" android:title="消息" /> </group> <item android:title="Sub items"> <menu> <item android:icon="@drawable/ic_dashboard" android:title="子条目1" /> <item android:icon="@drawable/ic_forum" android:title="子条目2" /> </menu> </item> </menu>
Activity
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private DrawerLayout mDrawerLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); // setSupportActionBar(toolbar); /** * 设置左上角的返回图标并显示 */ final ActionBar ab = getSupportActionBar(); ab.setHomeAsUpIndicator(R.drawable.ic_menu); ab.setDisplayHomeAsUpEnabled(true); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); /** * 设置navigationView * 被点击的item会高亮显示在抽屉菜单中,让用户知道当前是哪个菜单被选中 */ NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); // navigationView.addHeaderView();可以在代码中添加侧边栏的头部 // navigationView.inflateMenu();可以在代码中添加侧边栏的菜单 navigationView.getHeaderView(0).findViewById(R.id.head_iv).setOnClickListener(this); if (navigationView != null) { setupDrawerContent(navigationView); } } private void setupDrawerContent(NavigationView navigationView) { navigationView.setNavigationItemSelectedListener( new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem menuItem) { menuItem.setChecked(true); mDrawerLayout.closeDrawers(); return true; } }); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: mDrawerLayout.openDrawer(GravityCompat.START);//实现点击左上角的返回按钮可以打开或隐藏侧边栏 return true; } return super.onOptionsItemSelected(item); } @Override public void onClick(View view) { if (view.getId() == R.id.head_iv) { Toast.makeText(this, "点击头部", Toast.LENGTH_SHORT).show(); } } }github开源项目:https://github.com/chrisbanes/cheesesquare
相关文章推荐
- flex 控件的重要属性
- 学习Winform文本类控件(Label、Button、TextBox)
- Delphi控件ListView的属性及使用方法详解
- web下载的ActiveX控件自动更新
- WinForm实现按名称递归查找控件的方法
- C#中父窗口和子窗口之间控件互操作实例
- C#编写ActiveX网页截图控件
- Android编程之Button控件用法实例分析
- Android控件之CheckBox、RadioButton用法实例分析
- 在Android开发中使用自定义组合控件的例子
- 一款超酷的Android自定义加载控件
- Android重写View实现全新的控件
- MFC中动态创建控件以及事件响应实现方法
- WinForm自定义函数FindControl实现按名称查找控件
- Android控件之ProgressBar用法实例分析
- WinForm拖拽控件生成副本的解决方法
- ASP.NET动态添加用户控件的方法
- WinForm遍历窗体所有子控件的方法
- ASP.NET的HtmlForm控件学习及Post与Get的区别概述
- 浅析Bootstrap验证控件的使用