Тусклый экран и взаимодействие блоков с BottomSheets

BottomSheetBehavior был представлен в библиотеке поддержки дизайна Android 23.2, однако он не затемняет остальную часть экрана и не блокирует взаимодействие с остальным пользовательским интерфейсом. Есть ли в любом случае это может быть достигнуто?

2 ответа

public class BottomSheetDimmedFragment extends BottomSheetDialogFragment {
    public static final String TAG = BottomSheetDimmedFragment.class.getSimpleName();

    @NonNull
    @Override
    public Dialog onCreateDialog(final Bundle savedInstanceState) {
        final BottomSheetDialog dialog = (BottomSheetDialog) super.onCreateDialog(savedInstanceState);
        final View view = View.inflate(getContext(), R.layout.test, null);
        dialog.setContentView(view);
        return dialog;
    }

    public void show(final FragmentActivity fragmentActivity) {
        show(fragmentActivity.getSupportFragmentManager(), TAG);
    }
}

В вашей деятельности:

BottomSheetDimmedFragment sheet = new BottomSheetDimmedFragment();
sheet.show(this);

Теперь у вас будет тусклый, а также при нажатии на тусклый диалог закрывается.

введите описание изображения здесь

Реализация взята отсюда.

Используйте нижний лист с фрагментом вместо вида:)

Обратите внимание, что есть две реализации:

BottomSheetBehavior а также BottomSheetDialogFragment,

использование BottomSheetDialogFragment чтобы получить функциональность, в которой вы нуждаетесь.

Также при использовании BottomSheetBehavior установить макет android:clickable="true", Таким образом, клики не проходят, когда вы нажимаете на пустое место.(Для ясности: кликабельность установлена ​​на макете, содержащем тег app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior")

Другие вопросы по тегам