点击ViewGroup的空白区域,子View会变为点击态的bug原因及修复
来源:互联网 发布:java商城项目经验 编辑:程序博客网 时间:2024/05/21 10:53
点击ViewGroup的空白区域,子View会变为点击态的bug原因及修复:
原因:在ViewGroup被点击时,会触发setPressed(boolean pressed)方法,如下:
public void setPressed(boolean pressed) { final boolean needsRefresh = pressed != ((mPrivateFlags & PFLAG_PRESSED) == PFLAG_PRESSED); if (pressed) { mPrivateFlags |= PFLAG_PRESSED; } else { mPrivateFlags &= ~PFLAG_PRESSED; } if (needsRefresh) { refreshDrawableState(); } dispatchSetPressed(pressed); }
执行完refreshDrawableState()刷新ViewGroup的背景之后会调用dispatchSetPressed(pressed)来讲press状态分发给子类处理
@Override protected void dispatchSetPressed(boolean pressed) { final View[] children = mChildren; final int count = mChildrenCount; for (int i = 0; i < count; i++) { final View child = children[i]; // Children that are clickable on their own should not // show a pressed state when their parent view does. // Clearing a pressed state always propagates. if (!pressed || (!child.isClickable() && !child.isLongClickable())) { child.setPressed(pressed); } } }
从代码可以看出如果子view的clickable == false && longclickable == false的情况下,子view会调用自己的setPressed(pressed)方法,来刷新自己的背景,如果子view的背景是一个StateListDrawable的话就会显示出处于press状态下的背景。
解决:重写ViewGroup的dispatchSetPressed方法,不做任何处理即可。
protected void dispatchSetPressed(boolean pressed) {}
0 0
- 点击ViewGroup的空白区域,子View会变为点击态的bug原因及修复
- android中点击viewgroup时,子控件也会变成被点击的状态的原因及解决方法
- ViewGroup setVisibility 为GONE 子View依然占用地方,其中的子EditText会出现点击焦点占用
- 用 TouchDelegate 扩大子 View 的点击区域
- 点击GridView空白区域的事件处理
- View、ViewGroup的点击事件处理过程
- 使用TouchDelegate扩大View的点击区域
- 关于View扩展点击区域的误区
- 使用TouchDelegate扩大View的点击区域
- 自定义View弹出,周围变暗,点击view以外的区域,view消失及变亮。
- android点击空白区域隐藏软键盘的实现
- 提高selenium自动化的稳定性1-点击空白区域
- CCTableView 点击空白区域响应CellTouch事件BUG
- ViewGroup与View的点击冲突(获取焦点)
- 使用android.view.TouchDelegate扩大View的触摸点击区域
- 使用android.view.TouchDelegate扩大View的触摸点击区域
- ListView Item只能点击有文字的区域,空白处点击不了。
- 解决Android按住空白区域,导致点击其他按钮无法触发点击事件的问题
- 如何在Windows下使用Linux系统来编译和运行程序?
- Linux系统优化思路
- cache一致性问题的一个现象
- 多线程的通信方法
- POJ 3617 Best Cow Line
- 点击ViewGroup的空白区域,子View会变为点击态的bug原因及修复
- 实战Linux shell编程与服务器管理
- jQuery之$(document).ready()使用介绍
- LocationManager的用法
- Ubuntu网络配置
- Android Gallery 3张图无限循环 左右滑动都有效
- Java常见面试题(二)JAVA集合类
- Generic Programming and the STL笔记3--“会改变操作对象之内容”的算法
- Java算法之动态规划