guys. Can't deal with the problem. I'm asking for some advice.
I have a BottomSheetBehaviour with RecyclerView inside (and other interface elements). RecyclerView can contain a lot of content, i.e. it must scroll when all content does not get into the screen.
When little content is loaded into RecyclerView (few elements) it draws everything correctly. BottomSheetBehaviour works properly (link to screenshot).
However, if I download a lot of content, RecyclerView no longer draws it (link to screenshot).
I enclose the markup code below.
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable name="data" type=".controls.ControlSelectCategoriesFragment"/>
</data>
<FrameLayout
style="?AppTheme.BottomSheet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:elevation="4dp"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
tools:context=".controls.ControlSelectDateFragment">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="bottom"
android:background="?attr/AppTheme.ColorBottomSheetBackground"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintTop_toTopOf="parent">
<CODE HEADER id/header>
<RelativeLayout
android:id="@+id/recycler_view1"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/header"
app:layout_constraintBottom_toTopOf="@+id/accept_button">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:adjustViewBounds="true"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" />
</RelativeLayout>
<CODE BUTTON id/accept_button>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</FrameLayout>
</layout>
Below I attach the code that adds an adapter to RecyclerView
private void prepareData(){
listCategoriesAdapter = new ListCategoriesAdapterV2(parentContext, SessionManager.getInstance().getDataManager().findCategoriesByType(type), R.layout.view_category_hexagonal_item);
listCategoriesAdapter.setModeSelecting(TypeSelectingModeAdapter.Single);
listCategoriesAdapter.setVisibilityDetails(true);
updateRecyclerView();
}
private void updateRecyclerView() {
if (binder != null) {
GridLayoutManager gridLayoutManager = (GridLayoutManager) binder.recyclerView.getLayoutManager();
gridLayoutManager.setSpanCount(Math.min(4, listCategoriesAdapter.getElementsSize()));
binder.recyclerView.setAdapter(listCategoriesAdapter);
}
}
As a result, if BottomSheetDialog doesn't open full screen (there is not enough content), my RecyclerView works fine (screenshot). If there is a lot of content and BottomSheetDialog opens in full screen, then RecyclerView doesn't draw anything (screenshot).
Please help me solve the problem! Thanks.
Please login or Register to submit your answer