Android开发 - NavigationView的使用以及监听事件

NavigationView是一个比较美观好用的控件,比如侧边栏的布局。
一个布局需要有顶部的头部空间和底部的菜单空间,因此需要分别编写两个布局文件。
菜单栏布局文件

filename:main_side_nav_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:checkableBehavior="single">
        <item android:id="@+id/MainSideMenuHome"
            android:icon="@drawable/main_home_empty"
            android:title="Home"/>
        <item android:id="@+id/MainSideMenuDownload"
            android:icon="@drawable/main_top_download"
            android:title="Download"/>
    </group>
</menu>

头部布局文件,这里是我稍微写的一个

filename:main_side_nav_header.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="140dp"
    android:paddingTop="15dp"
    android:paddingLeft="15dp"
    android:paddingBottom="10dp"
    android:background="@color/deeppink"
    >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <de.hdodenhof.circleimageview.CircleImageView
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:id="@+id/MainSideMenuHeaderImage"

            android:layout_gravity="left"
            android:src="@drawable/test_image"/>
        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/main_side_nav_header_money"
            android:id="@+id/MainSideMenuHeaderMoney"/>
        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/main_side_nav_header_scanqr"
            android:id="@+id/MainSideMenuHeaderScanQR"/>
    </LinearLayout>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/MainSideMenuHeaderMoneyInfo"
        android:layout_alignParentBottom="true"
        android:text="B币:0.0    硬币:488.3"
        android:textSize="13sp"
        android:textColor="@color/lightgray"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/MainSideMenuHeaderUserName"
        android:layout_above="@+id/MainSideMenuHeaderMoneyInfo"
        android:text="蜜桃不好吃"
        android:textSize="16sp"
        android:textColor="#FFF"/>


</RelativeLayout>

在activity_main.xml的末尾直接添加控件就好了,在此通过app:menu和app:headerLayout分别设置菜单栏和头部布局文件。

<android.support.v4.widget.DrawerLayout>
......
    <android.support.design.widget.NavigationView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:menu="@menu/main_side_nav_menu"
        app:headerLayout="@layout/main_side_nav_header"
        android:id="@+id/MainSideMenu"
        >

    </android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>

最后修改一下MainActivity.java文件,在onCreate()方法最后添加如下代码,设置一下监听事件,即点击自动关上测边框。应该可以在这里通过MenuItem对菜单栏的按钮监听。

MainSideMenuNavigationView.setCheckedItem(R.id.MainSideMenuHome);
             MainSideMenuNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                MainSideMenuDrawLayout.closeDrawers();
                return true;
            }
        });
  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:像素格子 设计师:CSDN官方博客 返回首页
评论

打赏作者

BluePROT

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值