I'm using a NestedScrollView in a layout, and am attempting to use the new CoordinatorLayout from the design support library for CollapsingToolbarLayout.
My layout file looks like this:
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout 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"> <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="200dp" android:fitsSystemWindows="true" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary" app:expandedTitleMarginStart="48dp" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <!-- app:expandedTitleMarginEnd="64dp"--> <ImageView android:layout_width="match_parent" android:layout_height="200dp" android:scaleType="centerCrop" android:src="@drawable/image_load_default_big" /> <android.support.v7.widget.Toolbar android:id="@+id/anim_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> </android.support.v7.widget.Toolbar> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.NestedScrollView android:id="@+id/nestedScrollVw" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_scrollFlags="scroll|enterAlways" android:fitsSystemWindows="true" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="false" android:fitsSystemWindows="true"> <LinearLayout android:id="@+id/changePasswordButtonContainer" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <Button android:id="@+id/changePasswordExpand" android:layout_width="match_parent" android:layout_height="55dp" android:background="@drawable/back_img" android:text="Change Your Password" android:textColor="@color/white" android:textStyle="bold" /> </LinearLayout> <LinearLayout android:id="@+id/changePasswordContainer" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/changePasswordButtonContainer" android:layout_centerInParent="true" android:orientation="vertical" android:padding="10dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="Edit Your Password" android:textColor="@color/orange" /> <EditText android:id="@+id/etUserName" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:background="@drawable/edittext_default_bg" android:drawableLeft="@drawable/password_icon" android:drawableRight="@drawable/tick" android:hint=" Old Password" android:padding="12dp" android:password="true" android:textColorHint="#b5b5b5" /> <EditText android:id="@+id/etPass" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:background="@drawable/edittext_default_bg" android:drawableLeft="@drawable/password_icon" android:drawableRight="@drawable/cross" android:hint=" New Password" android:padding="12dp" android:password="true" android:textColorHint="#b5b5b5" /> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="20dp" android:paddingTop="20dp" android:text="show password" /> <Button android:id="@+id/btnSingIn" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="4dp" android:background="@drawable/login_button_background" android:paddingBottom="8dp" android:paddingTop="8dp" android:text="Done" android:textColor="@color/white" android:textStyle="bold" /> </LinearLayout> <LinearLayout android:id="@+id/dealerToDealerContainer" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/changePasswordContainer" android:orientation="vertical"> <Button android:id="@+id/dealerToDealerExpand" android:layout_width="match_parent" android:layout_height="55dp" android:background="@drawable/back_img" android:text="Dealer To Dealer Platform No" android:textColor="@color/white" android:textStyle="bold" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/dealerToDealerContainer" android:layout_centerInParent="true" android:orientation="vertical" android:padding="10dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="Edit Number" android:textColor="@color/orange" /> <EditText android:id="@+id/dealerToDealerNo" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:background="@drawable/edittext_default_bg" android:drawableLeft="@drawable/password_icon" android:drawableRight="@drawable/tick" android:hint=" 56546789" android:padding="12dp" android:password="true" android:textColorHint="#b5b5b5" /> <Button android:id="@+id/dealerToDealerNoDone" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="4dp" android:background="@drawable/login_button_background" android:paddingBottom="8dp" android:paddingTop="8dp" android:text="Done" android:textColor="@color/white" android:textStyle="bold" /> </LinearLayout> </RelativeLayout> </android.support.v4.widget.NestedScrollView> </android.support.design.widget.CoordinatorLayout>
When i try to scroll, sometimes it doesn't work. reason for this is, other elements of layout with click events are consuming the touch event. Basically EditText, RadioButton, Button are consuming touch events. Any Suggestions to solve this problem ?
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. It is enabled by default. NestedScrollView is used when there is a need for a scrolling view inside another scrolling view.
Nested scrolling is enabled by default. Show activity on this post. NestedScrollView is just like ScrollView, but in NestedScrollView we can put other scrolling views as child of it, e.g. RecyclerView. But if we put RecyclerView inside NestedScrollView, RecyclerView's smooth scrolling is disturbed.
Just add the fillViewPort parameter to your NestedScrollView . Like that the ConstraintLayout will expand just as you'd set its width to match_parent and the RecyclerView will dynamically expand its size.
I had the same problem. It happens only when NestedScrollView content height is less than height of device screen. So the workaround is to use setMinimumHeight(..)
method for the view inside your NestedScrollView
to make it resize to screen height:
DisplayMetrics displaymetrics = new DisplayMetrics(); getBaseActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int screenHeight = displaymetrics.heightPixels; int actionBarHeight = 0; TypedValue tv = new TypedValue(); if (getBaseActivity().getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) { actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics()); } view.setMinimumHeight(screenHeight - actionBarHeight);
where view
is your RelativeLayout
It works fine fore me. Hope it helps you
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