BottomSheetDialog 禁用拖动

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

我有

Bottomsheetdialog
,自定义视图有
EditText
,并且在
EditText
上滚动底部工作表向下,如何禁用
BottomSheetDialog
拖动。任何帮助表示赞赏。

android android-studio dialog android-alertdialog bottom-sheet
2个回答
0
投票

简单的解决方案,它解决了我遇到的两个问题。

1- 它阻止拖动事件。

2-解决了listView滚动问题

CoordinatorLayout.Behavior<View> behavior;

    View profile_config_layout_bottom_sheet = findViewById(R.id.list_view_audience_profile_config_layout);
    
        CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) profile_config_layout_bottom_sheet.getLayoutParams();
        behavior = layoutParams.getBehavior();
        assert behavior != null;
        ((BottomSheetBehavior<View>) behavior).addBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
            @Override
            public void onStateChanged(@NonNull View bottomSheet, int newState) {
                if (newState == BottomSheetBehavior.STATE_DRAGGING) {
                    ((BottomSheetBehavior<View>) behavior).setState(BottomSheetBehavior.STATE_EXPANDED);
                } 
            }
            @Override
            public void onSlide(@NonNull View bottomSheet, float slideOffset) {}
        });

显示对话框:

((BottomSheetBehavior) behavior).setState(BottomSheetBehavior.STATE_EXPANDED);

0
投票

我可能会迟到,但这对我来说很好:

@Override
public void setupDialog(final Dialog dialog, int style) {
    super.setupDialog(dialog, style);

    // This should do the job
    dialog.setCancelable(false);
    dialog.setCanceledOnTouchOutside(true);
}
© www.soinside.com 2019 - 2024. All rights reserved.