在swipable列表视图中具有onClickListener的视图不能再刷卡,但仅响应onClick事件

问题描述 投票:0回答:1

我在这个url之后实现了一个可跳过的listview:https://jayrambhia.com/blog/swipe-listview,唯一的区别是我只有MotionEvent.ACTION_DOWN和MotionEvent.ACTION_UP,并根据deltaX值检测MotionEvent.ACTION_UP中的移动。列表项的自定义视图包含在Linearlayout中的这样的布局:

TextView1 | TextView2 TextView3

在滑动之前,它看起来像:

enter image description here

最初隐藏TextView2和3,当滑动此视图时,它们将显示为:

enter image description here

我为所有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?

android android-listview ontouchevent swipe-gesture
1个回答
0
投票

我根据我的情况发布了答案。请检查此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
© www.soinside.com 2019 - 2024. All rights reserved.