由於我的信譽低,我無法評論。所以我擴展了這個問題: Disabling User dragging on BottomSheet禁用底部紙片拖動
由Ray W提供的解決方案工作,但現在它通過在父視圖(CoordinatorLayout)上滑動和拖動來擴展。
中的圖像,如果我拖上 「不需要拖拽區」,BottomSheet向上滑動。如何過濾或停止不需要的視圖上的觸摸事件?
由於我的信譽低,我無法評論。所以我擴展了這個問題: Disabling User dragging on BottomSheet禁用底部紙片拖動
由Ray W提供的解決方案工作,但現在它通過在父視圖(CoordinatorLayout)上滑動和拖動來擴展。
中的圖像,如果我拖上 「不需要拖拽區」,BottomSheet向上滑動。如何過濾或停止不需要的視圖上的觸摸事件?
變化從Ray W solution的onInterceptTouchEvent函數的返回值是:
@Override
public boolean onInterceptTouchEvent(CoordinatorLayout parent, V child, MotionEvent event) {
return super.onInterceptTouchEvent(parent, child, event) && mAllowUserDragging;
}
還有一件事,如果你有BottomSheetLayout一個ListView,然後滾動ListView中的項目將改變bottomSheetBehavior狀態「STATE_DRAGGING」從「 STATE_EXPANDED」。 示例代碼塊:
@Override
public void onBackPressed() {
if(isBottomViewOpen){ // set this bool in behavior callback
behavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
}else {
super.onBackPressed();
}
}
看看這個:
mBottomSheetBehavior1.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
if (newState == BottomSheetBehavior.STATE_DRAGGING) {
mBottomSheetBehavior1.setState(BottomSheetBehavior.STATE_EXPANDED);
}
}
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
Log.i("BottomSheetCallback", "slideOffset: " + slideOffset);
}
});
關閉BottomSheet時onBackPress:
@Override
public void onBackPressed() {
if(mBottomSheetBehavior1.getState() != 4) {
mBottomSheetBehavior1.setState(BottomSheetBehavior.STATE_COLLAPSED);
}
else {
super.onBackPressed();
}
}
在問候你的ListView評論。這有什麼解決辦法?我在底部清單中有一個回收站,我遇到了同樣的問題。如果我試圖在回收站查看以外的其他地方拖動底部紙張,底部紙張仍會按預期展開。只有拖動回收站查看底部表格纔會開始拖動。 – Zac
我最終使用了這個:https://github.com/umano/AndroidSlidingUpPanel Bottomsheet中還有很多其他問題,例如:不在BottomSheet中刷新ListView。所以我退出並改用SlidingUpPanel。 – Fahim