在swipable列表视图中具有onClickListener的视图不能再刷卡,但仅响应onClick事件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在swipable列表视图中具有onClickListener的视图不能再刷卡,但仅响应onClick事件相关的知识,希望对你有一定的参考价值。
我在这个url之后实现了一个可跳过的listview:https://jayrambhia.com/blog/swipe-listview,唯一的区别是我只有MotionEvent.ACTION_DOWN和MotionEvent.ACTION_UP,并根据deltaX值检测MotionEvent.ACTION_UP中的移动。列表项的自定义视图包含在Linearlayout中的这样的布局:
TextView1 | TextView2 TextView3
在滑动之前,它看起来像:
最初隐藏TextView2和3,当滑动此视图时,它们将显示为:
我为所有3个TextView设置了onClickListener,发现onClickListener设置为TextView1,如果从TextView1开始我无法滑动,并且仍然可以在TextView1之外滑动,因为TextView2和3最初是隐藏的。看起来TextView1只响应OnClickLisener。
我也试过为TextView1调用这些:
setClickable(true);
setEnabled(true);
setFocusable(true);
setFocusableInTouchMode(true);
我错过了什么?任何提示将不胜感激。提前致谢!
Editted:
我注意到如果我把手指放在TextView1和它的父线性布局之间,那么,滑动就可以了。因为子视图的onClickListener,看起来子视图(TextView1)禁用了它的父视图(Linearlayout)onTouchListener?在子视图中滑动开始时如何获取onTouchEvent?
我根据我的情况发布了答案。请检查此URL以获取实现swipable listview的代码:https://jayrambhia.com/blog/swipe-listview。
在我的代码中,我将触摸侦听器附加到listview项的布局视图(convertView):
convertView.setOnTouchListener(new SwipeDetector(viewHolder, position, data, mContext));
我还将相同的触摸侦听器附加到此convertView的视图持有者的“TextView1”:(这使得在“TextView1”上滑动工作。)
TextView1.setOnTouchListener(new SwipeDetector(this, position, data, act));
哪里
data - a java class holding the information for each list item;
position - a index of the list item
act / mContext - the activity instance
viewHolder - View holder class defined in the adapter
this - the Viewholder
以上是关于在swipable列表视图中具有onClickListener的视图不能再刷卡,但仅响应onClick事件的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio:如何将列表视图中的项目添加到列表视图 onClick
onClick 事件不适用于 android 中的嵌套列表视图项控件