前几天公司一同事让我帮忙解決用DrawerLayout时,DrawerLayout的侧边栏有种像Dialog那样的遮罩效果而且主页面内容点击不了,他要实现的功能是:去掉遮罩效果并且主页面内容例如Button之类的能夠点击,并且触发点击时侧边栏不能自动关闭,另外还要有常用的可以滑动侧边栏关闭侧边栏点击侧边栏的item要能够触发相应的事件的效果,于是就有了以下的博客
首先去掉遮罩效果很好实现,网上一大堆解决方案一般是通过设置如下代码实现:drawer.setDrawerListener(toggle);
其次,主页面内容不能点击这个很容易就知道是主页面事件被拦截了,那么是在DrawerLayout的onInterceptTouchEvent里面处理事件拦截还是在onTouchEvent里面处理拦截事件呢嗯,这个问题要想清楚艏先,借用鸿洋的话语DrawerLayout和DrawerView以及ContentView的关系就像爸爸和两个儿子,如果在onTouchEvent处理拦截事件判断isDrawerOpen并且点击位置位于ContentView里面,那样的话就会导致钱被爸爸拿去了大哥ContentView拿不到钱,那肯定不行现在大哥要能触发事件,要拿到钱所以要在爸爸将要把钱拿去的时候拿到钱才行,所以最終要在onInterceptTouchEvent里面处理事件,我是通过自定义DrawerLayout来实现的重要代码如下:
嗯,就是以上代码就实现了同事想实现嘚效果了最后感谢鸿洋给予的帮助!
最后附上源码下载链接: