gpt4 book ai didi

android - 防止 recyclerview 在触摸事件时停止滚动

转载 作者:太空宇宙 更新时间:2023-11-03 13:16:10 25 4
gpt4 key购买 nike

我有一个简单的 recyclerview,带有一个显示数字列表的字符串适配器,我想避免 recyclerview 在滚动时停止并被用户触摸。我已经取消了在用户拖动时手动滚动 recyclerview,但我需要自己以编程方式管理滚动(开始和停止滚动)

我不想让用户与 recyclerview 交互。这是一个小video显示当用户在滚动(停止)时触摸 recyclerview 时会发生什么。我想取消该行为。

这就是我如何在用户拖动时取消滚动

recyclerViewSlot.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
// set return "true" = disables scrolling behaviour on dragging
return true;
}

@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
}

@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
});

通过添加这些代码行,行为没有改变。

recyclerViewSlot.setEnabled(false);
recyclerViewSlot.setClickable(false);

最佳答案

您必须扩展 RecyclerView 类,然后手动阻止 onTouch 像这样被调用:

public class YourRecyclerView extends RecyclerView {

private boolean lock=false;
public YourRecyclerView (Context context) {
super(context);

}

public YourRecyclerView (Context context, AttributeSet attrs) {
super(context, attrs);
}

public YourRecyclerView (Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);

}


@Override
public boolean onTouchEvent(MotionEvent ev) {
if(!lock){

return super.onTouchEvent(ev);
}
else{
return true;
}

}


/**
* @return the lock
*/
public boolean isLock() {
return lock;
}

/**
* @param lock the lock to set
*/
public void setLock(boolean lock) {
this.lock = lock;
}
}

关于android - 防止 recyclerview 在触摸事件时停止滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35774566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com