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

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

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

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

 

 

 

 

 

 

  

  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值