Reputation: 15
Hi I have complex layout includes views on top and recycle view at bottom recycle view data can go up to 5000 rows when using nested scroll view it will freez for long time when use normal scroll view its working but only recycle view will be scrolling but i want all views to scroll
<?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>
<import type="android.view.View"/>
<variable
name="item"
type="xxx.models.Category" />
<variable
name="query"
type="String" />
</data>
<ScrollView
android:id="@+id/sc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="UselessParent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/_5sdp"
android:orientation="vertical"
tools:context=".ui.home.HomeFragment">
<LinearLayout
android:visibility="@{query.isEmpty() ? View.GONE : View.VISIBLE,default= gone}"
android:orientation="horizontal"
android:layout_width="match_parent"
android:gravity="center_vertical"
android:layout_marginBottom="@dimen/_5sdp"
android:layout_marginHorizontal="@dimen/_5sdp"
android:background="@color/darkgrey"
android:layout_height="wrap_content">
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
tools:text="Abaya"
android:text= "@{String.format(@string/query, query)}"
android:layout_margin="@dimen/_5sdp"
android:maxLines="1"
android:ellipsize="end"
android:gravity="center"
android:textColor="@color/white"
android:padding="@dimen/_5sdp"
style="@style/titleText" />
<ImageView
android:id="@+id/clear"
android:layout_width="@dimen/_24sdp"
android:layout_height="@dimen/_24sdp"
android:layout_marginHorizontal="@dimen/_5sdp"
android:foreground="?attr/selectableItemBackground"
android:src="@drawable/ic_close"
app:tint="@color/white" />
</LinearLayout>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/_5sdp"
app:cardCornerRadius="@dimen/_5sdp">
<ae.eds.fatima.helper.SliderView
android:id="@+id/slider"
android:overScrollMode="never"
android:layout_width="match_parent"
app:cardElevation="@dimen/_5sdp"
android:layout_height="@dimen/_120sdp" />
</androidx.cardview.widget.CardView>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/categories"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:overScrollMode="never"
android:layout_gravity="start"
android:layout_marginTop="@dimen/_5sdp"
tools:itemCount="8"
app:spanCount="4"
android:orientation="vertical"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
tools:listitem="@layout/home_subcategory_entry" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/_5sdp"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:textSize="@dimen/header4"
android:textColor="@color/black"
android:text="Recomended" />
<TextView
android:id="@+id/filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:textSize="@dimen/header4"
android:drawableStart="@drawable/ic_filter"
android:textColor="@color/black"
android:text="Filter" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/products"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="true"
android:overScrollMode="never"
android:orientation="vertical"
tools:itemCount="10"
app:spanCount="2"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
tools:listitem="@layout/product_entry" />
</LinearLayout>
</ScrollView>
</layout>
I tried nestedscroll false and using fragment type but looking forother soultion like how to measure and update scrollview height after update adapter
Upvotes: 0
Views: 39
Reputation: 156
try to use collapsing layout instead of nested scroll view
<?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>
<import type="android.view.View"/>
<variable
name="item"
type="xxx.models.Category" />
<variable
name="query"
type="String" />
</data>
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
android:background="@color/layoutBg"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/_5sdp"
android:orientation="vertical"
tools:context=".ui.home.HomeFragment">
<LinearLayout
android:visibility="@{query.isEmpty() ? View.GONE : View.VISIBLE,default= gone}"
android:orientation="horizontal"
android:layout_width="match_parent"
android:gravity="center_vertical"
android:layout_marginBottom="@dimen/_5sdp"
android:layout_marginHorizontal="@dimen/_5sdp"
android:background="@color/darkgrey"
android:layout_height="wrap_content">
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
tools:text="Abaya"
android:text= "@{String.format(@string/query, query)}"
android:layout_margin="@dimen/_5sdp"
android:maxLines="1"
android:ellipsize="end"
android:gravity="center"
android:textColor="@color/white"
android:padding="@dimen/_5sdp"
style="@style/titleText" />
<ImageView
android:id="@+id/clear"
android:layout_width="@dimen/_24sdp"
android:layout_height="@dimen/_24sdp"
android:layout_marginHorizontal="@dimen/_5sdp"
android:foreground="?attr/selectableItemBackground"
android:src="@drawable/ic_close"
app:tint="@color/white" />
</LinearLayout>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/_5sdp"
app:cardCornerRadius="@dimen/_5sdp">
<ae.eds.fatima.helper.SliderView
android:id="@+id/slider"
android:overScrollMode="never"
android:layout_width="match_parent"
app:cardElevation="@dimen/_5sdp"
android:visibility="gone"
android:layout_height="@dimen/_120sdp" />
</androidx.cardview.widget.CardView>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/categories"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:overScrollMode="never"
android:layout_gravity="start"
android:layout_marginTop="@dimen/_5sdp"
tools:itemCount="8"
app:spanCount="4"
android:orientation="vertical"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
tools:listitem="@layout/home_subcategory_entry" />
</LinearLayout>
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/_35sdp"
android:gravity="center_vertical"
android:paddingHorizontal="@dimen/_10sdp"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:textSize="@dimen/header4"
android:gravity="center_vertical"
android:textColor="@color/black"
android:text="@string/recommended" />
<TextView
android:id="@+id/filter"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="end"
android:gravity="center_vertical"
android:textSize="@dimen/header4"
android:textColor="@color/black"
android:text="@string/filter_sort"
app:drawableStartCompat="@drawable/ic_filter" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/products"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:overScrollMode="never"
android:orientation="vertical"
tools:itemCount="10"
app:spanCount="2"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
tools:listitem="@layout/product_entry" />
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</layout>
Upvotes: 1