Android中activity/fragment分别实现drawerlayout侧边栏布局以及抽屉页面的真正简单实现

一、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部分实现点击事件抽屉弹出,如上

效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值