How can I put a ListView into a ScrollView without it collapsing?
Using a ListView
to make it not scroll is extremely expensive and goes against the whole purpose of ListView
. You should NOT do this. Just use a LinearLayout
instead.
Android list view inside a scroll view
For any Child view to scroll inside a ScrollView. Anything like ListView, RecyclerView, etc. You just have to replace ScrollView with androidx.core.widget.NestedScrollView in your current xml and then magic happens.
Below is a sample xml code :
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp"
android:paddingBottom="20dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Recycler View inside a Scroll View"
android:textColor="@color/black"
android:textSize="@dimen/_20sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Below is a Recycler View as an example."
android:textSize="16sp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@id/et_damaged_qty" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="This textview automatically goes below the Recycler View."
android:textSize="16sp" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.core.widget.NestedScrollView>
Now you can get rid of all the ugly hacks you did to get around with nested scrolling.
ScrollView with a ListView doesn't scroll - android
I spent days trying to figure out how to achieve this and couldn't find any solution. You should not put a ListView inside a ScrollView
was the common saying everywhere I searched. I didn't want to use LinearLayout or ViewGroup because I had already created the whole UI using ListView and it looked awesome to me and everyone else. It worked well except that the page didn't scroll.
Recently I stumbled upon a question here and thought to give this answer a try. It works flawlessly!
Here's the solution:
public class Utility {
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
// pre-condition
return;
}
int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
}
}
Just call Utility.setListViewHeightBasedOnChildren(yourListView)
after you have assigned the adapter to your listview and you're done!
A big thanks to DougW
for coming up with the answer. Here is the original link How can I put a ListView into a ScrollView without it collapsing?
Related Topics
Android Broadcastreceiver on Startup - Keep Running When Activity Is in Background
Determine If Running on a Rooted Device
How to Load Script from Assets Index.Android.Bundle on Windows
How to Listen For a Webview Finishing Loading a Url
How to Pause/Sleep Thread or Process in Android
Resize a Large Bitmap File to Scaled Output File on Android
Application Skeleton to Support Multiple Screens
Sending Images Using Http Post
Open Facebook Page from Android App
Adding External Library in Android Studio
Get Value of a Edit Text Field
Download Binary File from Okhttp
Firebase Data Desc Sorting in Android
Run/Install/Debug Android Applications Over Wi-Fi
Android - Listen For Incoming Sms Messages
How to Implement My Very Own Uri Scheme on Android
How to Check Programmatically If an Application Is Installed or Not in Android