父控件对子控件事件拦截处理

       由于前段时间工作有一个项目太棘手太忙了 一直没有时间好好的去总结.好久也没更新自己的博客了.这次我就简单的讲解下简单的父控件对子控件的拦截事件的处理.

      在工作中可能会遇到当这种情况 ,一个组合的搜索框,父控件中包含一个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;
}

      我在这里通过在父控件中定义一个方法,通过改变变量的方法来控制父控件是否拦截子控件的事件.这样就完美的解决了我上述所说的问题.希望这篇文章对你的工作和学习有所帮助!!!!!

 

 

 

 

 

 

  

  

 

你可能感兴趣的:(Utils)