Полагаю, вы пытаетесь прокрутить RecyclerView
, пока BottomSheet
находится в состоянии BottomSheetBehavior.STATE_COLLAPSED
с некоторой высотой, установленной с помощью setPeekHeight()
или с BottomSheetBehavior.STATE_HALF_EXPANDED
, так что ваш RecyclerView
и другие вещи на фон по-прежнему можно нажимать или прокручивать в вашем случае.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Как будто любой виджет на экране не мешает вам манипулировать ими, потому что когда вы касаетесь любого виджета, вы просто поворачиваете изменить фокус текущего виджета (BottomSheet
в вашем случае) на другой виджет (RecyclerView
в вашем случае).
Если вы хотите изменить это поведение, то вам нужно отключить представления в фоновом режиме, в то время как BottomSheet
находится в определенном состоянии. И для этого есть несколько способов.
Один из способов - добавить View
, который охватывает все другие виды на экране (поместите его в соответствии с этими представлениями, чтобы его можно было расположить сверху из них, так что, когда вы касаетесь экрана от BottomSheet
, вы можете просто нажать этот вид).
Просмотреть пример:
<View
android:id="@+id/view_background"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#99000000"
android:visibility="gone" />
И вам нужно установить это представление на изначально View.GONE
, и всякий раз, когда вы показываете BottomSheet
, установите его на View.VISIBLE
программно. Например, нажмите определенную кнопку, затем отобразите BottomSheet и фоновое представление:
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_HALF_EXPANDED);
backgroundView.setVisibility(View.VISIBLE);
}
});
Вы можете установить фон представления прозрачным или полупрозрачным, чтобы RecyclerView и другие представления на фон все еще показывается.
Затем вы должны поместить логи c, когда это представление снова исчезнет; в моем предложенном подходе вы можете сделать что-то вроде, когда вы нажмете на него, затем свернете BottomSheet
и скроете вид:
backgroundView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
background.setVisibility(View.GONE);
}
});
Если вам нужна дополнительная помощь, пожалуйста, дайте мне знать