如何做一个侧滑菜单

转载请注明出处
图片托管服务由贴图库提供

相信许多刚接触Android开发的朋友的都有想过做一个漂亮的侧滑菜单,我一开始也有这个想法,但是许多网上的教程看得都往往不得要领,十分苦恼,后来有幸看到一篇很不错的文章,给了我很大的帮助,结合了一点自己的探究,今天写下这篇文章,希望能与大家共同进步。

最简单的方法

在新建一个Activity时,选择 new→activity→Gallery 选中其中的 Navigation Drawer Activity →Next→Finish

你得到了一个带侧滑菜单的Activity

不好意思,发错图了o(╯□╰)o

这里写图片描述
我们来看一下Activity代码的结构以及预览
这里写图片描述

以及主页面的结构

这里写图片描述

很明显主页面由两部分构成,一部分是我们进入页面时看到的页面,另一部分是下面的抽屉,最外层的布局是一个DrawerLayout,这个布局的作用在于它可以将经过设定的子布局藏起来,在让子布局显示或隐藏的过程中会自带一个出现和消失的动画,很贴心。

抽屉部分

<android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main2"
        app:menu="@menu/activity_main2_drawer" />

在Google提供的官方demo中,侧边栏使用了NavigationView这个控件,NavigationView由两部分组成,一部分是头部,也就是绿色的那部分,头部通过headerLayout设置为一个事先写好的Layout,headerLayout的高度由插入的Layout决定,这部分可以进行一部分个性化,另一部分是一个menu,通过获取menu 的资源id来设置,设置后各项menuitem将会显示在NavigationView的下半部分。

系统提供的侧滑菜单是很方便的,但是在进行个性化的时候是不够灵活的,比如在操作headerview中的控件时,需要先在activity中获取到Headerview,然后通过getHeaderView获取到布局的父布局,再通过使用
view.findViewById 来获取到最后要操作的控件,相对后讲到的方法会麻烦一些。
代码如下

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        LinearLayout name = (LinearLayout) navigationView.getHeaderView(0);
        TextView ming = (TextView) name.findViewById(R.id.name);
        ming.setText("李二狗");

另一方面 menuitem有自己固定的格式,个性化起来也很麻烦,想做出漂亮的侧滑菜单还需要使用其它方法。

那么如何做一个好看的侧滑菜单呢?

其实没那么难

父布局我们与官方给出的一样,使用DrawerLayout,同样的我们需要两个部分,一个是主页面显示的主体部分,另一个是我们的侧滑菜单,在这里我们不使用NavigationView,而是使用一个LinearLayout。

如果你想做让侧滑菜单出现在左边,就设置 android:layout_gravity= left或者start,反之,就设置为right或end,然后在这个布局中你可以直接将侧滑菜单的样式写进去,也可以写一个布局,然后include进去,在这里我推荐后者,如果代码量大了维护起来很麻烦。

如果要对侧滑菜单进行操作,直接在activity进行操作就好了,与其它的控件没什么两样,不过有一点要注意是。

如果你想在操作完侧滑菜单后让它自动收起,请调用DrawerLayout的closeDrawers()方法。

效果如下

这里写图片描述

本次内容,就是这样了。。。

后续我将会把开发上图中的android知乎日报客户端的过程写出来,希望大家关注。
关于左上角toolbar的用法大家可以直接百度一下,目前现成的资料还是很多的,由于本人水平有限,所以在写这篇博文的过程中难免有疏漏,还请各位指出。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: DrawerLayout 是 Android 中的一个布局容器,可以实现侧滑菜单的效果。用户可以通过滑动屏幕边缘或者点击按钮来打开或关闭侧滑菜单侧滑菜单通常用于显示应用程序的导航菜单、设置选项、帮助信息等。DrawerLayout 可以与其他布局容器一起使用,例如 LinearLayout、RelativeLayout 等。 ### 回答2: DrawerLayout 是 Android 的一种界面布局控件,主要用于实现侧滑菜单的功能。侧滑菜单是一种常见的手机应用界面设计,它能在应用主界面之外提供额外的功能选项和导航选项,提高了用户体验。 DrawerLayout 的使用非常简单,需要将主界面和菜单分别定义成两个布局文件,然后将它们作为子控件添加到 DrawerLayout 中即可。DrawerLayout 提供了一些常用的属性和方法,可以自定义菜单的宽度、位置、滑动手势等等。一个简单的示例代码如下: ```xml <android.support.v4.widget.DrawerLayout android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- 主界面内容 --> <FrameLayout android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent" /> <!-- 菜单内容 --> <ListView android:id="@+id/menu_list" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" /> </android.support.v4.widget.DrawerLayout> ``` 上述代码中,DrawerLayout 是父布局,包含了主界面内容和菜单内容两个子布局,其中主界面内容使用了 FrameLayout,菜单内容使用了 ListView。菜单内容的宽度设置为 240dp,位置设置为左侧,即滑动手势从左侧边缘开始。 除了布局之外,DrawerLayout 还提供了一些监听器和回调方法,用于处理打开、关闭、滑动等操作。具体可以参考 Android 开发文档。 总之,DrawerLayout 是实现 Android 应用侧滑菜单的一种非常方便的控件,可以提高应用的功能性和用户体验。但需要注意的是,过度使用侧滑菜单会降低应用的可用性和易用性,开发人员应该在实际需要时使用。 ### 回答3: DrawerLayout是Android支持库中提供的一个布局控件,用于实现侧滑菜单的效果。通过DrawerLayout,我们可以在应用中添加一个侧滑菜单,用户可以通过手指滑动屏幕方式展开或收起该菜单。出现侧滑菜单的情况通常是当我们希望在一个屏幕中同时包含大量信息时,将导航或其他常用操作从主屏幕中分离出来的时候。 DrawerLayout的使用非常简单。我们只需要将我们的主要内容和侧滑菜单分别放置在DrawerLayout中即可。然后将菜单居右侧或左侧设计样式,菜单的宽度可以指定。继而,我们可以通过布局或代码控制菜单的展开或收缩给用户提供更好的用户体验。因为默认情况下,用户可以通过滑动手势来展开或隐藏菜单。 在实现DrawerLayout侧滑菜单时,我们可以通过多种方式添加项目菜单,比如说ListView, GridView或Menu。但是,建议使用RecyclerView支持性更好而且可以和其他布局组合使用。如果需要更高级的菜单创建选项(Settings),我们可以使用PreferenceFragment,这样会尽可能地向用户提供标准化的菜单设置。 总之,DrawerLayout是一个非常方便的布局控件,不仅仅可以实现移动设备上的侧滑菜单,也可以在其他应用中方便地使用。它的灵活性让我们可以更加轻松地为用户提供更好的移动应用体验,并且很容易实现这一点。如果您是一名Android应用程序员,DrawerLayout值得一试!

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ImNOspy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值