Yow guys pada post kali ini saya ingin menunjukkan sebuah tips untuk kalian yang menangani list pada bottomsheet, tentu saja issuenya adalah bagaimana menampilkan data list agar terlihat tetap istimewah, meskipun data berubah-ubah. Ya sebenarnya google tidak menganjurkan penggunaan recyclerview dengan data dinamis pada bottomsheet ya. Jadi nego dulu dengan TIM PRODUCT jika bisa :3 haha
Selain itu, tentu saja ini tidak akan issue jika kalian menanganinya di fragment ataupun activity, namun ini hanya akan terjadi pada bottomsheet saja karena sifat bottomsheet dan recyclerview berlawanan.
Jika memaksa, kalian bisa cek code ini :
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout 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"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:background="@color/white">
<View
android:id="@+id/ll_header"
android:layout_width="0dp"
android:layout_height="100dp"
android:background="#DF0808"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_invoice"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constrainedHeight="true"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toTopOf="@+id/ll_footer"
app:layout_constraintEnd_toEndOf="@+id/ll_footer"
app:layout_constraintStart_toStartOf="@+id/ll_footer"
app:layout_constraintTop_toBottomOf="@+id/ll_header"
app:layout_constraintVertical_bias="0"
app:layout_constraintVertical_chainStyle="packed"
tools:itemCount="40" />
<View
android:id="@+id/ll_footer"
android:layout_width="0dp"
android:layout_height="100dp"
android:background="#000"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Kalian lihat? Recyclerview disana memiliki tinggi yang menyesuaikan, jadi apapun isi datanya, list akan tetap berada diantara footer dan header. Scrollpun akan tetap aman, inti dari code ini adalah pada app:layout_constrainedHeight=”true” yang mana view tersebuat akan menyesuaikan tinggi sesuai dengan layout.
Namun cara ini tetap memiliki kelemahan ya, misalnya kalian membuat feature pencarian pada bottomshet. Sehingga list akan menyesuaikan tinggi, bahkan hilang dari pandangan karena ketutup dengan keyboard. Mungkin jika itu terjadi, teman-teman bisa set bottomsheet langsung pull memenuhi layar saja hehe
Semoga bermanfaat