androidx中简单使用侧滑菜单

布局文件

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawerLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <!-- 内容区 -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <Button
            android:id="@+id/btn_open_left"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="open"
            android:text="打开菜单" />

    </LinearLayout>

    <!-- 左边菜单 -->
    <com.google.android.material.navigation.NavigationView
        android:id="@+id/navigation_view"
        android:layout_width="200dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:headerLayout="@layout/drawer_header"
        app:menu="@menu/menu_drawer_left" />

</androidx.drawerlayout.widget.DrawerLayout>

com.google.android.material.navigation.NavigationView 需引入implementation 'com.android.support:design:29.1.1’包

drawer_header.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="120dp"
    android:background="@color/colorPrimary"
    android:gravity="center"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/iv_head"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:src="@mipmap/black" />

</LinearLayout>

menu_drawer_left.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/all_item"
        android:title="全部" />
    <item
        android:id="@+id/a_item"
        android:title="A" />

    <item
        android:id="@+id/b_item"
        android:title="B" />
</menu>

Activity中处理

package com.hj.matchmaker;

import android.os.Bundle;
import android.view.Gravity;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.drawerlayout.widget.DrawerLayout;

import com.google.android.material.navigation.NavigationView;

public class MainActivity extends AppCompatActivity {
    
    

    private DrawerLayout drawerLayout;
    private NavigationView navigation_view;
    private ImageView headView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        drawerLayout = findViewById(R.id.drawerLayout);
        navigation_view = findViewById(R.id.navigation_view);
        headView = navigation_view.getHeaderView(0).findViewById(R.id.iv_head);
        headView.setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View v) {
    
    
                drawerLayout.closeDrawers();
                Toast.makeText(MainActivity.this, "点击了图片", Toast.LENGTH_LONG).show();
            }
        });
        navigation_view.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
    
    
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
    
    
                switch (menuItem.getItemId()) {
    
    
                    case R.id.all_item:
                        Toast.makeText(MainActivity.this, "点击了全部", Toast.LENGTH_LONG).show();
                        break;
                    case R.id.a_item:
                        Toast.makeText(MainActivity.this, "点击了a", Toast.LENGTH_LONG).show();
                        break;
                    case R.id.b_item:
                        Toast.makeText(MainActivity.this, "点击了b", Toast.LENGTH_LONG).show();
                        break;
                    default:
                        break;
                }
                drawerLayout.closeDrawers();
                return true;
            }
        });
    }

    public void open(View view) {
    
    
        drawerLayout.openDrawer(Gravity.LEFT);
    }

}

效果图:
在这里插入图片描述

仅此记录

猜你喜欢

转载自blog.csdn.net/nongminkouhao/article/details/114372770