DrawerLayout与ListView滑动冲突
2016-03-23 11:44
309 查看
事件:当DrawerLayout的主内容是一个ListView时,滑动ListView经常会拉出菜单
解决方法:使用自定义控件替换DrawerLayout即可
解决方法:使用自定义控件替换DrawerLayout即可
import android.content.Context; import android.support.v4.widget.DrawerLayout; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.ViewConfiguration; /** * Created by kwf on 2016/3/23 0023. */ public class CustomDrawerLayout extends DrawerLayout { public CustomDrawerLayout(Context context) { this(context, null); } public CustomDrawerLayout(Context context, AttributeSet attrs) { this(context, attrs, 0); } public CustomDrawerLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); final ViewConfiguration configuration = ViewConfiguration .get(getContext()); mTouchSlop = configuration.getScaledTouchSlop(); } private int mTouchSlop; private float mLastMotionX; private float mLastMotionY; @Override public boolean onInterceptTouchEvent(MotionEvent ev) { try { final float x = ev.getX(); final float y = ev.getY(); switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: mLastMotionX = x; mLastMotionY = y; break; case MotionEvent.ACTION_MOVE: int xDiff = (int) Math.abs(x - mLastMotionX); int yDiff = (int) Math.abs(y - mLastMotionY); final int x_yDiff = xDiff * xDiff + yDiff * yDiff; boolean xMoved = x_yDiff > mTouchSlop * mTouchSlop; if (xMoved) { if (xDiff > yDiff * 4) { return true; } else { return false; } } break; default: break; } return super.onInterceptTouchEvent(ev); } catch (IllegalArgumentException ex) { } return false; } @Override public boolean onTouchEvent(MotionEvent ev) { try { return super.onTouchEvent(ev); } catch (IllegalArgumentException ex) { } return false; } }
相关文章推荐
- 多线程的使用技巧:使用匿名内部类来实现一个线程的创建
- ListView加载多套布局
- Linux Netcat 命令——网络工具中的瑞士军刀
- Hadoop2.5.2 HA高可靠性集群搭建(Hadoop+Zookeeper)
- Word中标题、图表自动编号的方法
- 什么是代码缩进(code indent)
- Tomcat找不到class,未部署
- ubuntu下启动和关闭tomcat的简单方法
- 使用gem命令时出现的几种错误
- 获取顶层视图控制器UIViewController
- ESESC仿真器的安装
- iOS开发的一些奇巧淫技
- 使用多线程方法实现一个死锁程序,用来提醒自己不要犯这样的错误
- 键路径(keyPath)、键值编码(KVC)和键值观察(KVO)
- 工厂方法模式( Factory Method 模式 )
- wordpress内存不足问题“Fatal error:out of memoryin etc...”
- VS 自动添加注释
- java多线程回顾2:生命周期与控制
- tcp/ip ---子网寻址
- Ubuntu上安装Maven Eclipse以及配置