不能滑动的SlidingPaneLayout

本文讲述了在Android开发中遇到SlidingPaneLayout与Viewpager滑动冲突的问题,通过重写SlidingPaneLayout的onInterceptTouchEvent方法,实现点击按钮打开菜单,并在菜单打开后阻止SlidingPaneLayout的滑动,允许Viewpager正常滑动。同时提供了自定义控件的代码,以支持长滑动打开菜单,短滑动切换ViewPager。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不能滑动的SlidingPaneLayout


最近在做一个项目,其中侧边导航栏是用Google自己推出的一个SlidingPaneLayout控件,与网上的开源项目SlideMenu用法类似,可以实现右划拉出隐藏菜单,这个控件的用法网上很多,就不多介绍了,首先要导入最新的android.supportv4 包,以保证低版本能使用。
但是主界面我用了Viewpager,这样SlidingPaneLayout的滑动就与Viewpager的滑动冲突了,于是我就在想可以把打开菜单作为一个Button的点击事件,之后只要关闭SlidingPaneLayout的滑动就OK了。
然而在网上找了大量的代码都没有找到我所需要的,更多的都是在介绍这个控件如何使用,于是我不得不重写SlidingPaneLayout的部分方法让他适合我的需求。首先我想到的是重写它的canSlide方法,将其返回值改为return false,然而并没有什么卵用。。。
然后我去查了谷歌的帮助文档,发现了一个叫onInterceptTouchEvent的方法。直觉告诉我,我要找的东西来了。
首先是XML布局文件

<com.gmp.widget.MySlideMenu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/main_slidemenu"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:descendantFocusability="afterDescendants"
    android:isScrollContainer="true"
     >

    <!-- 菜单在前面,主界面在后面 -->
    <!-- 菜单界面就不贴了,就是一个简单的TextView-->
    <include layout="@layout/widget_main_menu" />

    <RelativeLayout
        android:layout_width=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值