Navigation View--抽屉式布局

在Material Design中,Navigation drawer导航抽屉,被设计用于应用导航,提供了一种通用的导航方式,体现了设计的一致性。

典型形式

配合v4包的DrawerLayout,作为其中的Drawer部分。NavigationView是一个导航菜单框架,使用menu资源填充数据,使我们可以更简单高效的实现导航菜单。它提供了不错的默认样式、选中项高亮、分组单选、分组子标题、以及可选的Header。

main.xml

<android.support.v4.widget.DrawerLayout
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

   <!-- Content 形式不限,推荐主内容区使用FrameLayout布局-->
    <FrameLayout
        android:id="@+id/content_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

   <!-- Drawer -->
    <android.support.design.widget.NavigationView
        android:id="@+id/navigation"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:headerLayout="@layout/drawer_header"
        app:menu="@menu/drawer"/>
</android.support.v4.widget.DrawerLayout>

app:headerLayout 可选项,抽屉头布局,可以添加标题,用户头像,签名等信息
app:menu=”@menu/drawer”,菜单布局,也可以动态更改

drawer.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:checkableBehavior="single">
        <item
            android:id="@+id/navigation_original"
            android:checked="true"
            android:icon="@drawable/ic_star_white_24dp"
            android:title="@string/navigation_original"/>

        <item
            android:id="@+id/navigation_library"
            android:icon="@drawable/ic_public_white_24dp"
            android:title="@string/navigation_library"/>
    </group>
</menu>

处理点击事件

用 setNavigationItemSelectedListener 方法来设置当导航项被点击时的回调。OnNavigationItemSelectedListener 会提供给我们被选中的 MenuItem,这与 Activity 的 onOptionsItemSelected 非常类似。通过这个回调方法,我们可以处理点击事件,改变item的选中状态,更新页面内容,关闭导航菜单,以及任何我们需要的操作.

mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(MenuItem menuItem) {
        if (sNavigationMap.containsKey(menuItem.getItemId())) {
            menuItem.setChecked(true); // 改变item选中状态
            setTitle(menuItem.getTitle()); // 改变页面标题,标明导航状态
            currentNavigationId = menuItem.getItemId();
            mDrawerLayout.closeDrawers(); // 关闭导航菜单
            return true;
        } else {
            return false;
        }
    }
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值