我在此URL: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开始,则无法滑动,而且由于TextView2和3最初是隐藏的,因此仍然可以在TextView1之外滑动。看来TextView1只响应OnClickLisener。
我也尝试将其称为TextView1:
setClickable(true);
setEnabled(true);
setFocusable(true);
setFocusableInTouchMode(true);
我错过了什么?任何提示将不胜感激。预先感谢!
已编辑:
我注意到,如果我将手指放在TextView1和它的父级Linearlayout之间,则滑动将起作用。如此看来,子视图(TextView1)由于子视图的onClickListener禁用了其父视图(Linearlayout)onTouchListener?从子视图开始滑动时如何获取onTouchEvent?
答案 0 :(得分:0)
我会针对我的情况发布答案。请检查以下网址以获取实现可滑动列表视图的代码: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