In my application, I'm using tabHost Activiy.In the tabhost first tab,I'm using TabActivity,I'm loading more than 500 images.
Using Nested SCroll view:
I have used nested scroll view inside recyclerview.When loading the home page, it is loading all 500 images initially, then showing the home page.So that it cause memory out of error.
Without using nested SCroll view:
If I remove nested scroll view, everything is working good.it loads image one by one when scrolling.it doesn't cause out of memory error.
My Requirement:
I need to scroll the relative layout placed top of the recyclerview.So that I used nested scroll view.But it doesn't worked for me.
tab_home_layout:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.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"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
>
<LinearLayout
android:id="@+id/tab_home_activity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<RelativeLayout
android:id="@+id/home_layout_top_2_recycler"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@drawable/layout_border"
>
<ImageView
android:id="@+id/img_user_home_tab_recycler"
android:layout_width="40dp"
android:layout_height="40dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:layout_centerVertical="true"
android:contentDescription="@string/cont_desc"
android:src="@drawable/profile_pic_blue" />
<TextView
android:id="@+id/tv_user_mind_home_tab_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@+id/img_user_home_tab_recycler"
android:hint="@string/whats_on"
android:textColor="@color/Black"
android:textSize="@dimen/txt_size" />
</RelativeLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_list_tab_home_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none"
android:visibility="visible" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
Below I'm willing to share what I have tried so far.
I tried this SO Post.But I'm using home page inside tabActivity.So I can't use toolbar + coordinator layout.So this solution wasn't worked for me.
Then I tried to use multiple layout for recyclerview.But that doesn't worked for me.Because that relativelayout is a static one.If I'm getting any condition from webservice means, I can use multiple layout recyclerview.But I need to just scroll the views.
I planned to set the static relativelayout in 0th position of adapter.But my webservices images were loading from 0th position.So I can't set the static relativelayout in adapter at 0th position.
is there any alternate solution to solve this issue.Thank You.
setnestedscrollingenabled set it to false.
The problem can be solved by moving the SliverAppBar into the CustomScrollView and not use the NestedScrollView at all.
NestedScrollView is just like ScrollView , but it supports acting as both a nested scrolling parent and child on both new and old versions of Android. Nested scrolling is enabled by default.
You can use CoordinatorLayout
just about anywhere you like similar to other layouts like LinearLayout
or even RelativeLayout
. If you want your RelativeLayout
to scroll in response to your RecyclerView
, simply place them inside a CoordinatorLayout
with an AppBarLayout
. Here's your layout modified:
<android.support.design.widget.CoordinatorLayout
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/home_layout_top_2_recycler"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@drawable/layout_border"
app:layout_scrollFlags="scroll">
<ImageView
android:id="@+id/img_user_home_tab_recycler"
android:layout_width="40dp"
android:layout_height="40dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:layout_centerVertical="true"
android:contentDescription="@string/cont_desc"
android:src="@drawable/profile_pic_blue" />
<TextView
android:id="@+id/tv_user_mind_home_tab_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@+id/img_user_home_tab_recycler"
android:hint="@string/whats_on"
android:textColor="@color/Black"
android:textSize="@dimen/txt_size" />
</RelativeLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_list_tab_home_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none"
android:visibility="visible"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</android.support.design.widget.CoordinatorLayout>
Change it to your preference but be sure to set the layout_height
of the RelativeLayout
to something other than wrap_content
.
If this CoordinatorLayout
is inside another CoordinatorLayout
, use the NestedCoordinatorLayout
from this answer as your inside CoordinatorLayout
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With