由于前段时间工作有一个项目太棘手太忙了 一直没有时间好好的去总结.好久也没更新自己的博客了.这次我就简单的讲解下简单的父控件对子控件的拦截事件的处理.
在工作中可能会遇到当这种情况 ,一个组合的搜索框,父控件中包含一个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;
}
我在这里通过在父控件中定义一个方法,通过改变变量的方法来控制父控件是否拦截子控件的事件.这样就完美的解决了我上述所说的问题.希望这篇文章对你的工作和学习有所帮助!!!!!
父控件事件拦截机制
本文探讨了在Android开发中,如何通过父控件对子控件的触摸事件进行拦截,以实现特定功能,如在搜索过程中阻止清除按钮对EditText文本的清除。介绍了两种解决方案,并详细展示了通过重写父控件的onInterceptTouchEvent方法来控制事件分发的实现方式。
1326

被折叠的 条评论
为什么被折叠?



