由于前段时间工作有一个项目太棘手太忙了 一直没有时间好好的去总结.好久也没更新自己的博客了.这次我就简单的讲解下简单的父控件对子控件的拦截事件的处理.
在工作中可能会遇到当这种情况 ,一个组合的搜索框,父控件中包含一个EditText 和一个清除的Button 当在搜索时候不容许点击清除按钮清除EditText的文本内容.这种情况有两种解决方案:
1. 可以判断是否在搜索 从而对Button设置是否可以点击
2.使用我将介绍的方法解决.通过父控件拦截子控件的事件,通过事件分发机制来处理.
分析了一波,那就直接上代码了:
1.我们自定义一个父控件并重写它的 onInterceptTouchEvent(MotionEvent ev)方法.
@Override public boolean onInterceptTouchEvent(MotionEvent ev) { if (isIntercept){ return true; } return super.onInterceptTouchEvent(ev); } /** * 通过外界来控制是否拦截子控件的事件 * @param intercept */ public void setIntercept(boolean intercept) { this.isIntercept = intercept; }
我在这里通过在父控件中定义一个方法,通过改变变量的方法来控制父控件是否拦截子控件的事件.这样就完美的解决了我上述所说的问题.希望这篇文章对你的工作和学习有所帮助!!!!!