NestedScrollView disable scrolling when recyclerview is visible

44 Views Asked by At

I am trying to disable NestedScrollView when my RecyclerView is visible. Below is my layout :

 <RelativeLayout
        android:layout_width="match_parent"
        android:background="@color/colorBackgroundApp"
        android:layout_height="match_parent">

        <androidx.coordinatorlayout.widget.CoordinatorLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true">

            <com.google.android.material.appbar.AppBarLayout
                android:id="@+id/app_bar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fitsSystemWindows="true"
                android:theme="@style/AppTheme.AppBarOverlay">

                <com.google.android.material.appbar.CollapsingToolbarLayout
                    android:id="@+id/toolbar_layout"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:fitsSystemWindows="true"
                    app:contentScrim="@color/colorPrimary"
                    app:layout_scrollFlags="scroll|exitUntilCollapsed"
                    app:toolbarId="@+id/toolbar">

                    <RelativeLayout
                        android:layout_width="match_parent"
                        android:layout_height="match_parent">

                        <RelativeLayout
                            android:id="@+id/rl1"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginStart="16dp"
                            android:layout_marginEnd="16dp">

                            <LinearLayout
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:layout_alignParentStart="true"
                                android:layout_marginTop="70dp"
                                android:gravity="center"
                                android:orientation="vertical">

                                <TextView
                                    android:id="@+id/tv_class_name"
                                    style="@style/TextAppearance.MdcTypographyStyles.Headline4"
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:text="@string/hey_there"
                                    android:textColor="@android:color/white" />

                                <TextView
                                    android:id="@+id/tv_videos_test"
                                    style="@style/TextAppearance.MdcTypographyStyles.Subtitle1"
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:text="@string/let_s_start_with_finding_you_a_right_property"
                                    android:textColor="@android:color/white"
                                    android:textSize="12sp" />

                            </LinearLayout>

                            <com.google.android.material.card.MaterialCardView
                                android:id="@+id/materialCardView"
                                android:layout_width="50dp"
                                android:layout_height="50dp"
                                android:layout_alignParentEnd="true"
                                android:layout_marginStart="15dp"
                                android:layout_marginTop="20dp"
                                android:theme="@style/Theme.MaterialComponents.Light"
                                android:visibility="gone"
                                app:cardBackgroundColor="#FAFAFB"
                                app:cardCornerRadius="15dp"
                                app:cardElevation="3dp"
                                app:layout_constraintBottom_toBottomOf="parent"
                                app:layout_constraintStart_toStartOf="parent"
                                app:layout_constraintTop_toTopOf="parent">

                                <ImageView
                                    android:layout_width="match_parent"
                                    android:layout_height="match_parent"
                                    android:scaleType="centerCrop"
                                    android:src="@drawable/person_placeholder" />

                            </com.google.android.material.card.MaterialCardView>


                        </RelativeLayout>

                       <!-- <EditText
                            android:id="@+id/locationEditText"
                            android:layout_width="match_parent"
                            android:layout_height="45dp"
                            android:layout_below="@id/rl1"
                            android:layout_marginStart="25dp"
                            android:layout_marginTop="30dp"
                            android:layout_marginEnd="25dp"
                            android:background="@drawable/search_bg"
                            android:drawableEnd="@drawable/ic_baseline_arrow_drop_down_24"
                            android:drawablePadding="10dp"
                            android:ems="12"
                            android:focusable="false"
                            android:fontFamily="@font/montserrat_regular"
                            android:hint="@string/search_properties"
                            android:inputType="text"
                            android:lines="1"
                            android:maxLines="1"
                            android:onClick="@{()->viewModel.onSearchClicked()}"
                            android:paddingStart="16dp"
                            android:textAllCaps="false"
                            android:textColor="@color/colorTextPrimary"
                            android:textColorHint="@color/colorTextSecondary"
                            android:textSize="16sp" />-->


                    </RelativeLayout>

                    <androidx.appcompat.widget.Toolbar
                        android:id="@+id/toolbar"
                        android:layout_width="match_parent"
                        android:layout_height="?attr/actionBarSize"
                        app:layout_collapseMode="pin"
                        app:popupTheme="@style/AppTheme.PopupOverlay">

                        <ImageView
                            android:id="@+id/logoImageView"
                            android:layout_width="30dp"
                            android:layout_height="30dp"
                            android:layout_marginEnd="16dp"
                            android:src="@drawable/logo"/>

                        <TextView
                            android:id="@+id/toolbar_text"
                            style="@style/TextAppearance.MdcTypographyStyles.Headline6"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:text="@string/app_name"
                            android:textColor="@android:color/white"
                            android:visibility="visible" />
                    </androidx.appcompat.widget.Toolbar>


                </com.google.android.material.appbar.CollapsingToolbarLayout>
            </com.google.android.material.appbar.AppBarLayout>


            <androidx.core.widget.NestedScrollView
                android:id="@+id/nestedScrollView"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:layout_behavior="@string/appbar_scrolling_view_behavior">

                <androidx.constraintlayout.widget.ConstraintLayout
                    android:layout_width="match_parent"
                    android:layout_marginTop="30dp"
                    android:layout_height="wrap_content">

                    <EditText
                        android:id="@+id/locationEditText"
                        android:layout_width="match_parent"
                        android:layout_height="45dp"
                        android:background="@drawable/search_bg"
                        android:drawableEnd="@drawable/ic_baseline_arrow_drop_down_24"
                        android:drawablePadding="10dp"
                        android:ems="12"
                        android:layout_marginStart="25dp"
                        android:layout_marginEnd="25dp"
                        android:focusable="false"
                        android:fontFamily="@font/montserrat_regular"
                        android:hint="@string/search_properties"
                        android:inputType="text"
                        android:lines="1"
                        android:maxLines="1"
                        android:onClick="@{()->viewModel.onSearchClicked()}"
                        android:paddingStart="16dp"
                        android:textAllCaps="false"
                        android:textColor="@color/colorTextPrimary"
                        android:textColorHint="@color/colorTextSecondary"
                        android:textSize="16sp"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent" />


                    <FrameLayout
                        android:layout_width="0dp"
                        android:layout_height="300dp"
                        android:translationZ="50dp"
                        app:layout_constraintEnd_toEndOf="@+id/locationEditText"
                        app:layout_constraintStart_toStartOf="@+id/locationEditText"
                        app:layout_constraintTop_toBottomOf="@+id/locationEditText">

                        <androidx.recyclerview.widget.RecyclerView
                            android:id="@+id/recyclerViewCities"
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"
                            android:background="@android:color/white"
                            android:layout_marginStart="10dp"
                            android:layout_marginEnd="10dp"
                            android:visibility="gone" />

                    </FrameLayout>


                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="vertical"
                        android:layout_marginTop="20dp"
                        app:layout_constraintTop_toBottomOf="@+id/locationEditText">

                        <TextView
                            style="@style/TextAppearance.MdcTypographyStyles.Headline5"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginStart="15dp"
                            android:layout_marginEnd="15dp"
                            android:layout_marginBottom="16dp"
                            android:ellipsize="end"
                            android:maxLines="1"
                            android:text="Categories"
                            android:textColor="@android:color/white"
                            android:textSize="18sp" />

                        <androidx.recyclerview.widget.RecyclerView
                            android:id="@+id/recyclerViewCategories"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content" />

                        <androidx.recyclerview.widget.RecyclerView
                            android:id="@+id/recyclerViewHome"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="10dp"
                            tools:listitem="@layout/home_category_list" />

                    </LinearLayout>


                </androidx.constraintlayout.widget.ConstraintLayout>



            </androidx.core.widget.NestedScrollView>
        </androidx.coordinatorlayout.widget.CoordinatorLayout>


        <ProgressBar
            android:id="@+id/progressbarHome"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true" />


    </RelativeLayout>

I have recyclerViewCities whose visibility is GONE initially inside NestedScrollView. This recyclerViewCities is shown when edit text is clicked.

I have tried the below code to disable NestedScrollView scrolling when the recyclerViewCities is visible and enable it when its visibility is GONE. But it's not working.

   if (binding.recyclerViewCities.visibility == View.VISIBLE) {
                        binding.recyclerViewCities.visibility = View.GONE
                        binding.nestedScrollView.isNestedScrollingEnabled = true
                    } else {
                        binding.recyclerViewCities.visibility = View.VISIBLE
                        binding.nestedScrollView.isNestedScrollingEnabled = false
                    }

Am I missing something? How to disable nestedScrollView scrolling when recyclerview is visible and vise-versa?

0

There are 0 best solutions below