ListView嵌套GridView点击空白地方无法触发ListView点击事件解决方法
2015-07-26 15:15
411 查看
最近在做个项目,需要个需求,类似微信朋友圈的功能,不过跟微信朋友圈不同的是,他点击item会进入详情页,点击图片会参看大图,但是当我的图片无法铺满一行时,点击空白部分时就无法跳转到详情页,这里不方便拿公司项目的截图,就画张图说明下
废话不多说,如何解决冲突,这里用了http://www.cnblogs.com/Kecp/p/gridview_touch_expand.html?utm_source=tuicool这篇博客的方法
重写gridview:
然后在你的adapter里就可以回调了
这里在listview的item布局的根布局最好加上
废话不多说,如何解决冲突,这里用了http://www.cnblogs.com/Kecp/p/gridview_touch_expand.html?utm_source=tuicool这篇博客的方法
重写gridview:
[code]public class CanDoBlankGridView extends GridView { OnTouchInvalidPositionListener mTouchInvalidPosListener; public CanDoBlankGridView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public CanDoBlankGridView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public CanDoBlankGridView(Context context) { this(context, null); } @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } public interface OnTouchInvalidPositionListener { /** * motionEvent 可使用 MotionEvent.ACTION_DOWN 或者 * MotionEvent.ACTION_UP等来按需要进行判断 * * @return 是否要终止事件的路由 */ boolean onTouchInvalidPosition(int motionEvent); } /** * 点击空白区域时的响应和处理接口 */ public void setOnTouchInvalidPositionListener( OnTouchInvalidPositionListener listener) { mTouchInvalidPosListener = listener; } @Override public boolean onTouchEvent(MotionEvent event) { if (mTouchInvalidPosListener == null) { return super.onTouchEvent(event); } if (!isEnabled()) { // A disabled view that is clickable still consumes the touch // events, it just doesn't respond to them. return isClickable() || isLongClickable(); } final int motionPosition = pointToPosition((int) event.getX(), (int) event.getY()); if (motionPosition == INVALID_POSITION) { super.onTouchEvent(event); return mTouchInvalidPosListener.onTouchInvalidPosition(event .getActionMasked()); } return super.onTouchEvent(event); } }
然后在你的adapter里就可以回调了
[code]holder.gridView.setOnTouchInvalidPositionListener(new OnTouchInvalidPositionListener() { @Override public boolean onTouchInvalidPosition(int motionEvent) { /*当返回false的时候代表交由父级控件处理,当return true的时候表示你已经处理了该事件并不 让该事件再往上传递。为了出发listview的item点击就得返回false了*/ return false; } });
这里在listview的item布局的根布局最好加上
[code]android:descendantFocusability="blocksDescendants"
相关文章推荐
- 揭开CSS3媒体查询迷雾(min-width和max-width)
- Mac上的抓包工具Charles 附下载链接
- 【bzoj1031】【JSOI2007】【字符加密Cipher】
- 【Codevs3160】最长公共子串
- Android实战简易教程-第二十七枪(Android设置头像上传功能实现)
- HTML5基础06----HTML5样式的使用
- xhost display详解
- poj 1502 MPI Maelstrom(最短路)
- JSP学习笔记(四):点击按钮跳转到action
- 【数据库学习】耿建玲视频总结
- A Bug's Life-----poj2492
- Scala并发编程react、loop代码实战详解
- python对运行程序进行日志文件记录
- ZOJ Problem Set - 3405 Counting Factor Trees
- 欢迎使用CSDN-markdown编辑器
- 马云控股“中国文化”什么暗藏玄机?
- 处理linux java -version版本不一致问题
- Native library not found! Please copy ibbdpush_v2_3.so into your project!
- Rescue zoj1649 优先队列
- Vim重复命令