Multiple Lists in ScrollView

I have a complex xml file and I really need a ScrollView. Please ignore the identifiers, as I changed them. ScrollView does not work here.

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fillViewport="true"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/f_summary_LL"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/black"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:id="@+id/BT1" android:textColor="@color/white" android:textStyle="bold" android:gravity="center_vertical|left" android:paddingLeft="2dp" android:textSize="13sp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:id="@+id/BTS1" android:textColor="@color/white" android:paddingLeft="4dp" android:textSize="13sp"/> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_vertical|right" android:layout_weight="1"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:id="@+id/textView7" android:textSize="13sp" android:textColor="@color/white" android:textStyle="bold" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:id="@+id/BT1CRR" android:textColor="@color/white" android:paddingRight="8dp" android:textSize="13sp" android:paddingLeft="2dp"/> </LinearLayout> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="" android:id="@+id/textView" android:textColor="@color/white" android:layout_weight="3" android:gravity="center" android:background="@drawable/table_header_cell_first" android:textStyle="bold" android:textSize="13sp"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="R" android:id="@+id/textView1" android:textColor="@color/white" android:gravity="center" android:background="@drawable/table_header_cell" android:textSize="13sp" android:textStyle="bold" android:layout_weight="1" /> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="B" android:id="@+id/textView2" android:textColor="@color/white" android:gravity="center" android:background="@drawable/table_header_cell" android:textStyle="bold" android:textSize="13sp" android:layout_weight="1"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="4s" android:id="@+id/textView3" android:textColor="@color/white" android:gravity="center" android:background="@drawable/table_header_cell" android:textSize="13sp" android:textStyle="bold" android:layout_weight="1"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="6s" android:id="@+id/textView4" android:textColor="@color/white" android:layout_weight="1" android:gravity="center" android:background="@drawable/table_header_cell" android:textSize="13sp" android:textStyle="bold"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="SR" android:id="@+id/textView5" android:textColor="@color/white" android:layout_weight="1" android:gravity="center" android:background="@drawable/table_header_cell" android:textSize="13sp" android:textStyle="bold"/> </LinearLayout> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" > <ListView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/listView1"/> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/black" android:baselineAligned="false"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:baselineAligned="false"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:id="@+id/BT2" android:textStyle="bold" android:textColor="@color/white" android:gravity="center_vertical|left" android:paddingLeft="2dp" android:textSize="13sp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:id="@+id/BTS2" android:textSize="13sp" android:textColor="@color/white" android:paddingLeft="4dp"/> </LinearLayout> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="" android:id="@+id/textViewBH" android:textColor="@color/white" android:layout_weight="3" android:gravity="center" android:background="@drawable/table_header_cell_first" android:textSize="13sp" android:textStyle="bold"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="O" android:id="@+id/textViewBOH" android:textColor="@color/white" android:layout_weight="1" android:gravity="center" android:background="@drawable/table_header_cell" android:textSize="13sp" android:textStyle="bold" android:clickable="false" /> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="M" android:id="@+id/textViewBMH" android:textColor="@color/white" android:layout_weight="1" android:gravity="center" android:background="@drawable/table_header_cell" android:textStyle="bold" android:textSize="13sp"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="R" android:id="@+id/textViewBRH" android:textColor="@color/white" android:layout_weight="1" android:gravity="center" android:background="@drawable/table_header_cell" android:textSize="13sp" android:textStyle="bold"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="W" android:id="@+id/textViewBWH" android:textColor="@color/white" android:layout_weight="1" android:gravity="center" android:background="@drawable/table_header_cell" android:textSize="13sp" android:textStyle="bold"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="" android:id="@+id/textViewBECOH" android:textColor="@color/white" android:layout_weight="1" android:gravity="center" android:background="@drawable/table_header_cell" android:textSize="13sp" android:textStyle="bold"/> </LinearLayout> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content"> <ListView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/listView2"/> </LinearLayout> </LinearLayout> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/innings2"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/black"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:id="@+id/BT2" android:textStyle="bold" android:textColor="@color/white" android:gravity="center_vertical|left" android:paddingLeft="2dp" android:textSize="13sp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:id="@+id/BTS2" android:textSize="13sp" android:textColor="@color/white" android:paddingLeft="4dp"/> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:gravity="center_vertical|right"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:id="@+id/textView7" android:textStyle="bold" android:textColor="@color/white" android:textSize="13sp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="0.00" android:id="@+id/Bae2C" android:textColor="@color/white" android:paddingLeft="2dp" android:paddingRight="8dp" android:textSize="13sp"/> </LinearLayout> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="" android:id="@+id/textView" android:textColor="@color/white" android:layout_weight="3" android:gravity="center" android:background="@drawable/table_header_cell_first" android:textSize="13sp" android:textStyle="bold"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="R" android:id="@+id/textView9" android:textColor="@color/white" android:layout_weight="1" android:gravity="center" android:background="@drawable/table_header_cell" android:textSize="13sp" android:textStyle="bold" android:clickable="false" /> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="" android:id="@+id/textView10" android:textColor="@color/white" android:layout_weight="1" android:gravity="center" android:background="@drawable/table_header_cell" android:textStyle="bold" android:textSize="13sp"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="" android:id="@+id/textView11" android:textColor="@color/white" android:layout_weight="1" android:gravity="center" android:background="@drawable/table_header_cell" android:textSize="13sp" android:textStyle="bold"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="" android:id="@+id/textView4" android:textColor="@color/white" android:layout_weight="1" android:gravity="center" android:background="@drawable/table_header_cell" android:textSize="13sp" android:textStyle="bold"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="" android:id="@+id/textView5" android:textColor="@color/white" android:layout_weight="1" android:gravity="center" android:background="@drawable/table_header_cell" android:textSize="13sp" android:textStyle="bold"/> </LinearLayout> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" > <ListView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/listView3"/> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/black" android:baselineAligned="false"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:baselineAligned="false"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:id="@+id/Bw1" android:textStyle="bold" android:textColor="@color/white" android:gravity="center_vertical|left" android:paddingLeft="2dp" android:textSize="13sp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:id="@+id/BoSe1" android:textSize="13sp" android:textColor="@color/white" android:paddingLeft="4dp"/> </LinearLayout> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="" android:id="@+id/textViewBH" android:textColor="@color/white" android:layout_weight="3" android:gravity="center" android:background="@drawable/table_header_cell_first" android:textSize="13sp" android:textStyle="bold"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="" android:id="@+id/textViewBOH" android:textColor="@color/white" android:layout_weight="1" android:gravity="center" android:background="@drawable/table_header_cell" android:textSize="13sp" android:textStyle="bold" android:clickable="false" /> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="" android:id="@+id/textViewBMH" android:textColor="@color/white" android:layout_weight="1" android:gravity="center" android:background="@drawable/table_header_cell" android:textStyle="bold" android:textSize="13sp"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="" android:id="@+id/textViewBRH" android:textColor="@color/white" android:layout_weight="1" android:gravity="center" android:background="@drawable/table_header_cell" android:textSize="13sp" android:textStyle="bold"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="" android:id="@+id/textViewBWsH" android:textColor="@color/white" android:layout_weight="1" android:gravity="center" android:background="@drawable/table_header_cell" android:textSize="13sp" android:textStyle="bold"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="" android:id="@+id/textViewBECOH" android:textColor="@color/white" android:layout_weight="1" android:gravity="center" android:background="@drawable/table_header_cell" android:textSize="13sp" android:textStyle="bold"/> </LinearLayout> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" > <ListView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/listView4"/> </LinearLayout> </LinearLayout> </LinearLayout> </ScrollView> 
+5
source share
5 answers

This can be done, although you should not put the listview inside the scrollbar, but sometimes it is easier: fooobar.com/questions/19754 / ...

+6
source

Response from a Google employee who runs Android:

Do not use ListView inside ScrollView

https://plus.google.com/107708120842840792570/posts/T5AgJ7jiK88

enter image description here

+25
source

Use like this: IT WORKS HOW TO CHARM

Delete linear layout. use the relative layout inside this place where your two kinds of list are located.

 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scrollojt" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fillViewport="true"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#f00"></ListView> <ListView android:id="@+id/listView2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/listView1" android:background="#0f0"></ListView> </RelativeLayout> </ScrollView> 

add Utility.java

 public class Utility { public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { // pre-condition return; } int totalHeight = 0; int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.AT_MOST); for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED); totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); listView.setLayoutParams(params); listView.requestLayout(); } } 

In your activity:

 lv1.setAdapter(adapter); lv2.setAdapter(adapter); Utility.setListViewHeightBasedOnChildren(lv1); Utility.setListViewHeightBasedOnChildren(lv2); 

Thanks #Nirmal for the actual answer fooobar.com/questions/151705 / ...

+5
source

ScrollView and ListView use scrolling. Therefore, in my opinion, they cannot be used together. Try using RelativeLayout or another layout instead of ScrollView

+2
source

You can install it by including the ListView in the parent layout, as in the example below -

 <?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"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <androidx.cardview.widget.CardView android:id="@+id/cardRange" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="@dimen/fab_margin" android:layout_marginBottom="6dp" app:cardElevation="3dp"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <in.indilabz.fillip_ecommerce.customs.light.TextViewRobotoLight android:id="@+id/priceRangeTitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Price Range" android:layout_marginTop="@dimen/fab_margin" android:layout_marginLeft="@dimen/fab_margin" android:layout_marginRight="@dimen/fab_margin" android:textAppearance="@style/TextAppearance.AppCompat.Small" android:textColor="@color/md_black_1000"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:weightSum="3" android:layout_marginTop="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_marginBottom="@dimen/fab_margin" android:layout_below="@+id/priceRangeTitle"> <EditText android:layout_width="0dp" android:layout_height="50dp" android:layout_weight="1" android:layout_marginLeft="4dp" android:maxLines="1" android:maxLength="6" android:inputType="number" android:padding="2dp" android:gravity="center" android:background="@drawable/edit_text_rect"/> <in.indilabz.fillip_ecommerce.customs.bold.TextViewRobotoBold android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:textColor="@color/md_black_1000" android:text="- to -"/> <EditText android:layout_width="0dp" android:layout_height="50dp" android:layout_weight="1" android:layout_marginRight="4dp" android:maxLines="1" android:maxLength="6" android:inputType="number" android:padding="2dp" android:gravity="center" android:background="@drawable/edit_text_rect"/> </LinearLayout> </RelativeLayout> </androidx.cardview.widget.CardView> <androidx.cardview.widget.CardView android:id="@+id/cardBrand" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="@dimen/fab_margin" android:layout_below="@+id/cardRange" app:cardElevation="3dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <in.indilabz.fillip_ecommerce.customs.light.TextViewRobotoLight android:id="@+id/brandTitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Brands" android:layout_marginTop="@dimen/fab_margin" android:layout_marginLeft="@dimen/fab_margin" android:layout_marginRight="@dimen/fab_margin" android:textAppearance="@style/TextAppearance.AppCompat.Small" android:textColor="@color/md_black_1000"/> <ListView android:id="@+id/brandList" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_marginBottom="@dimen/fab_margin" /> </LinearLayout> </androidx.cardview.widget.CardView> <Space android:layout_width="match_parent" android:layout_height="6dp" /> <androidx.cardview.widget.CardView android:id="@+id/cardRating" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="@dimen/fab_margin" android:layout_below="@+id/cardBrand" app:cardElevation="3dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <in.indilabz.fillip_ecommerce.customs.light.TextViewRobotoLight android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Ratings" android:layout_marginTop="@dimen/fab_margin" android:layout_marginLeft="@dimen/fab_margin" android:layout_marginRight="@dimen/fab_margin" android:textAppearance="@style/TextAppearance.AppCompat.Small" android:textColor="@color/md_black_1000"/> <ListView android:id="@+id/ratingList" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_marginBottom="@dimen/fab_margin" /> </LinearLayout> </androidx.cardview.widget.CardView> <Space android:layout_width="match_parent" android:layout_height="6dp" /> </LinearLayout> </androidx.core.widget.NestedScrollView> 

And, after the list is full -

 eachitemSize = 180; cardBrand.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, eachitemSize * brandsAdapter.getCount())); cardRating.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, eachitemSize * ratingAdapter.getCount())); 

What we did above, we set match_parent height. And after the ListView is populated, we defined each parent ListView layout with its number of ListView elements. And don't forget to change eachitemSize fit the size of each cell.

Another thing to take care of is that after LayoutParams is assigned, its field becomes invalid due to new LayoutParams. So use <Space/> instead of margin as in the example above.

Hope it helps !!

0
source

Source: https://habr.com/ru/post/1480411/


All Articles