Android(安卓)设置View点击区域
16lz
2021-01-26
最近看源码看见onTouchEvent 方法中 有这么一段话
if (mTouchDelegate != null) { if (mTouchDelegate.onTouchEvent(event)) { return true; } }
也就是说 设置该代理后会直接消费事件 最后写代码测试了下 发现该代理 会增加事件处理的区域
lin = (LinearLayout) findViewById(R.id.lin); tv = (TextView) findViewById(R.id.tv); btn = (Button) findViewById(R.id.btn); tv.setBackgroundColor(Color.RED); lin.setTouchDelegate(new TouchDelegate(new Rect(0,0,500,500),tv)); tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d("tg","view onclick"); } }); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d("tg","btn onclick"); } }); lin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d("tg","lin onclick"); } });
验证后发现 确实会增加事件处理区域 但是在增加的事件区域消费事件后 父容器将无法接收到事件 但不会影响到其他view的事件
更多相关文章
- Android(安卓)频道管理仿今日头条
- Android中对标签进行监听的方法
- Android(安卓)判断触摸点是否在某个view的区域,解决子view与paren
- StevGuo系列文章翻译之Android中的输入事件如何分发
- Android(安卓)Studio 解析XML的三种方法
- Android(安卓)设备侧usb驱动开发
- Android(安卓)简述touch事件中的MotionEvent
- Android中事件分发机制理解
- android中BaseActivity的公共方法