drawerlayout

最近接手一个新项目需要用到侧滑功能,虽然以前也接入过,但是都是开发人员自定义的控件,接入起来特别麻烦,幸好google出了drawerlayou控件,现在就可以轻松实现侧滑功能了,下面直接撸代码
<?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="match_parent"
    android:clipToPadding="false"
    android:fitsSystemWindows="true"
    android:orientation="vertical">
<android.support.v4.widget.DrawerLayout
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#fff">
        <FrameLayout
            android:id="@+id/ly_content"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
        <!--android:layout_gravity="left"-->
        <RelativeLayout
            android:layout_width="275dp"
            android:layout_height="match_parent"
            android:layout_gravity="left"
            android:clickable="true"
            >
            <LinearLayout
                android:layout_width="275dp"
                android:layout_height="match_parent"
                android:background="#f5f5f5"
                android:orientation="vertical">
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="50dp"
                    android:layout_marginLeft="15dp"
                    android:orientation="horizontal">
                    <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:src="@mipmap/ic_get_food"/>
                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="15dp"
                        android:orientation="vertical">
                        <TextView
                            android:id="@+id/tv_user_name"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="**"
                            android:textSize="18sp"
                            android:textColor="@color/font_130b27"/>
                        <TextView
                            android:id="@+id/tv_user_nick"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="**"
                            android:layout_marginTop="10dp"
                            android:textSize="15sp"
                            android:textColor="@color/font_ffcc24"/>
                    </LinearLayout>
                </LinearLayout>
                <TextView
                    android:id="@+id/tv_user_dept"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="产品研发"
                    android:textSize="16sp"
                    android:textColor="@color/font_130b27"
                    android:layout_marginLeft="15dp"
                    android:layout_marginTop="50dp"/>
                <TextView
                    android:id="@+id/tv_user_email"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="chaoge@baofu.com"
                    android:textSize="16sp"
                    android:textColor="@color/font_130b27"
                    android:layout_marginLeft="15dp"
                    android:layout_marginTop="20dp"/>
            </LinearLayout>
            <LinearLayout
                android:id="@+id/ll_out"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="50dp"
                android:layout_alignParentBottom="true"
                android:layout_marginBottom="30dp"
                android:orientation="vertical">
                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:src="@mipmap/ic_out"/>
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="14sp"
                    android:layout_gravity="center_horizontal"
                    android:textColor="@color/font_130b27"
                    android:layout_marginTop="10dp"
                    android:text="退出"/>
            </LinearLayout>
        </RelativeLayout>

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


</LinearLayout>
以上就是布局文件就是drawerlayout的布局了,drawerlayout布局下面主要包含了两个模块,上面的是主界面要显示的模块,直接写了一个FrameLayout,用fragment实现主界面,然后直接塞进去。
下面的内容就是侧滑菜单中要显示的内容了。需要注意的一点就是侧滑布局的跟布局需要添加android:layout_gravity="left"或者android:layout_gravity="right"来决定布局是从左边还是右边滑出
在写的过程中可能需要判断drawerlayout的是否滑出,google也给了相应的方法
 
drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {
            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {

            }

            @Override
            public void onDrawerOpened(View drawerView) {

            }

            @Override
            public void onDrawerClosed(View drawerView) {

            }

            @Override
            public void onDrawerStateChanged(int newState) {

            }
        });
里面包含对侧滑打开,关闭,以及滑动状态的监听
接下来就是设置测试菜单是否需要打开了
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); //设置侧滑可以滑动
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);//禁止侧滑滑动
这会侧滑功能基本上已经可以完美实现了,不过在后来测试的过程中遇见一个穿透点击事件
处理方案:
在侧滑布局的根布局添加
android:clickable="true"
以上就侧滑功能的基本实现了




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值