【发布时间】:2018-06-24 11:31:21
【问题描述】:
正常行为:当我们投掷滚动回收器视图时,项目将滚动,然后点击,RV 将停止滚动,不执行项目点击。
我需要什么:停止滚动+执行项目点击!
任何hacky方式?
【问题讨论】:
标签: android android-recyclerview touch android-touch-event
正常行为:当我们投掷滚动回收器视图时,项目将滚动,然后点击,RV 将停止滚动,不执行项目点击。
我需要什么:停止滚动+执行项目点击!
任何hacky方式?
【问题讨论】:
标签: android android-recyclerview touch android-touch-event
我从这里得到了答案 link
我想添加更多代码...
public class MyRecyclerView extends RecyclerView {
public MyRecyclerView(Context context) {
super(context);
}
public MyRecyclerView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public MyRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent e) {
//https://stackoverflow.com/a/46569656/8863321
boolean requestCancelDisallowInterceptTouchEvent = getScrollState() == SCROLL_STATE_SETTLING;
boolean consumed = super.onInterceptTouchEvent(e);
final int action = e.getActionMasked();
switch (action) {
case MotionEvent.ACTION_DOWN:
if( requestCancelDisallowInterceptTouchEvent ){
getParent().requestDisallowInterceptTouchEvent(false);
// stop scroll to enable child view get the touch event
stopScroll();
// not consume the event
return false;
}
break;
}
return consumed;
} }
这是非常罕见的情况,但这个技巧将来可能会对某人有所帮助!
【讨论】: