Android学习笔记之滑动菜单

一、DrawerLayout的简单使用

1.DrawerLayout是一个布局,它允许在布局中放入两个直接子控件,第一个子控件就是主屏幕中的内容,第二个子控件就是滑动菜单中显示的内容。其中第二个子控件必须设置layout_gravity属性,它表示滑动菜单在屏幕的左边还是右边。


    
        
    
    

PS:第二个子控件的layout_gravity属性值设置为start,表示根据系统语言进行判断,如果系统语言是从左往右的,那么滑动菜单就在左边,如果系统语言是从右往左的,那么滑动菜单就在右边。类似的,设置成end的话,则是系统语言的结尾处。 

2.设置导航栏按钮实现点击按钮弹出抽屉。先获取到ActionBar的实例,然后为HomeAsUp按钮设置一个合适的图标(默认是返回键)

ActionBar actionBar = getSupportActionBar();
if(actionBar!=null){
    actionBar.setDisplayHomeAsUpEnabled(true);
    actionBar.setHomeAsUpIndicator(R.drawable.list);
}

然后在重写的onOptionsItemSelected()方法中为HomeAsUp按钮添加点击事件,打开抽屉

case android.R.id.home:
    drawerLayout.openDrawer(GravityCompat.START);
    break;

PS:这里的openDrawer()方法接收一个Gravity参数,与XML中定义的一致,传入GravityCompat.START 

二、NavigationView的简单使用

1.在app/build.gradle中添加design库的依赖

implementation 'com.android.support:design:27.1.1'

2.编写NavigationView中的菜单项:在res/menu目录下新建一个目录资源文件nav_menu.xml


    
        
        
        
        
    

group标签表示一个组,组和组之间的Item有明显的分隔。group的checkableBehavior属性设置为single表示该组中的所有菜单项只能单选。

3.编写NavigationView的headerLayout,这是一个可以随意定制的布局,示例中就简单的放一张图片两段文本:在res/layout目录下新建一个布局资源文件nav_header.xml



    

    

    

4.将滑动菜单DrawerLayout的第二个子控件设置为NavigationView


......
    

5.为NavigationView的菜单项设置点击事件监听器

navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        drawerLayout.closeDrawers();
        return true;
    }
});

PS:上述示例代码运行时,会发现点击一个滑动菜单中的Item之后,下次打开滑动菜单时会发现上次被点击的Item被选中了。如果不需要这种效果,可以在nav_menu.xml文件中将对应的菜单组的选择模式设置为none

你可能感兴趣的:(Android)