一、activity
第一步:在该activity.xml文件里把原先的constraintlayout改成drawerlayout,然后手动在里面写两个constraintlayout,最好把作为侧边栏的constraintlayout布局放在主页面后面,其中主页面是默认该页面初始显示的页面,再自己手敲设置layout_gravity为left/right(即侧边栏从左边或右边弹出)。
代码如下:
<?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:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawerlayout"
tools:context=".MainActivity">
<--! 主页面 -->
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
</androidx.constraintlayout.widget.ConstraintLayout>
<--! 可以设置背景色弹出时更明显看自己是否成功 -->
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"
android:layout_gravity="start">
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.drawerlayout.widget.DrawerLayout>
**注意:如果你在设置id时它可能会报错代码变红,但是不用管,检查无误后直接运行,报错就会消失,我昨天写的时候遇到了,折磨我好久,以为是文件出了问题,因为在另一个项目的activity却能实现,也没搜出个什么结果来,最后问的老师才知道直接运行就行了,感觉自己像个小丑,还是经验太少。
第二步:java代码,点击事件基础实现代码极少
代码如下:
findViewById(R.id.textView5).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DrawerLayout drawerLayout = findViewById(R.id.drawerlayout);
drawerLayout.openDrawer(Gravity.LEFT);
}
});
二、fragment
实现过程和activity差不多,开始我还以为需要一些其他的操作,结果是我想多了。
第一步:直接在fragment.xml修改成和如上一样的drawerlayout
第二步:略有不同,稍加修改即可
view.findViewById(R.id.imageView44).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DrawerLayout drawerLayout = view.findViewById(R.id.drawer);
drawerLayout.openDrawer(Gravity.LEFT);
}
});
三、抽屉页面简单实现
1. 创建menu的xml文件:
(1) res -> new -> android resource directory
(2) directory type改为menu并设置directory name,我设置的是menu
(3) menu文件 -> new -> menu resource directory
(4) 设置file name,我这里设置为navigation
2. 自行设计页面内容,里面的几个控件都是全新的,我也不咋会,这里只作简单讲解
例如实现几条菜单选项
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="存储空间管理" />
<item android:title="音效" />
<item android:title="账号页管理" />
<item android:title="账号与安全" />
<item android:title="跨端续播" />
<item android:title="消息和隐私设置" />
<item android:title="系统权限设置" />
</menu>
3. 在所属activity/fragment的xml文件中引用
这里把constraintlayout改成navigation
<com.google.android.material.navigation.NavigationView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:menu="@menu/navigation"
android:layout_gravity="start">
</com.google.android.material.navigation.NavigationView>
4. java部分实现点击事件抽屉弹出,如上
效果: