0

I have a parent fragment with a CoordinatorLayout as root layout and i am showing different child fragments inside parent fragment. Child fragments may have scrollable content and unscrollable content. In a scrollable child fragment, if scroll reaches to page bottom, child fragment scroll event triggers parent fragments scroll. If child doesn't have scrollable content and trying to scroll child causes parent fragment's scroll. Child fragments' width and height are both match parent and root layouts have android:clickable="true" attribute. This is parent fragment's xml

<androidx.coordinatorlayout.widget.CoordinatorLayout 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"
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.google.android.material.appbar.AppBarLayout
    android:id="@+id/appBarLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:elevation="0dp"
    android:background="@color/background_grey">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_scrollFlags="scroll">

        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_constraintTop_toTopOf="parent">

            <androidx.constraintlayout.widget.ConstraintLayout
                android:id="@+id/llMenuOpened"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/toolbar_background"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent">

                <ImageView
                    android:id="@+id/igLogo"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:padding="15dp"
                    android:src="@drawable/header"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent" />

                <.customViews.ApTextView
                    android:id="@+id/tvAddress"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="70dp"
                    android:layout_marginTop="15dp"
                    android:layout_marginEnd="15dp"
                    android:layout_marginBottom="15dp"
                    android:drawableEnd="@drawable/chevron_down"
                    android:drawablePadding="10dp"
                    android:ellipsize="end"
                    android:gravity="end"
                    android:maxLines="1"
                    android:textColor="@color/dark_gunmetal"
                    android:textSize="13sp"
                    app:fontFamily="@font/montserrat_medium"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintHorizontal_bias="1.0"
                    app:layout_constraintStart_toEndOf="@+id/igLogo"
                    app:layout_constraintTop_toTopOf="parent" />

            </androidx.constraintlayout.widget.ConstraintLayout>

            <customViews.PromoView
                android:id="@+id/rateOrderPromoView"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginTop="4dp"
                app:layout_constraintTop_toBottomOf="@id/llMenuOpened"
                app:layout_constraintStart_toStartOf="@id/clSearch"
                app:layout_constraintEnd_toEndOf="@id/clSearch"/>

            <customViews.PromoView
                android:id="@+id/mvHomePromo"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginTop="4dp"
                app:layout_constraintTop_toBottomOf="@id/rateOrderPromoView"
                app:layout_constraintStart_toStartOf="@id/rateOrderPromoView"
                app:layout_constraintEnd_toEndOf="@id/rateOrderPromoView"/>

            <androidx.constraintlayout.widget.ConstraintLayout
                android:id="@+id/clSearch"
                android:layout_width="match_parent"
                android:layout_height="48dp"
                android:layout_marginLeft="8dp"
                android:layout_marginRight="8dp"
                android:layout_marginTop="8dp"
                android:background="@drawable/background_white_border"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/mvHomePromo">

                <ImageView
                    android:id="@+id/ivSearchFirst"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentStart="true"
                    android:layout_marginStart="8dp"
                    android:padding="12dp"
                    android:src="@drawable/search_dark"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent" />

                <EditText
                    android:id="@+id/etSearch"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:background="@color/white"
                    android:backgroundTint="@color/white"
                    android:focusable="false"
                    android:hint="@string/hint_search"
                    android:imeOptions="actionSearch"
                    android:inputType="text"
                    android:textColorHint="@color/submarine"
                    android:textSize="14sp"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintEnd_toStartOf="@+id/ivMicrophone"
                    app:layout_constraintStart_toEndOf="@+id/ivSearchFirst"
                    app:layout_constraintTop_toTopOf="parent" />

                <ImageView
                    android:id="@+id/ivMicrophone"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:padding="8dp"
                    android:src="@drawable/ic_microphone"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintEnd_toStartOf="@+id/ivBarcode"
                    app:layout_constraintTop_toTopOf="parent" />

                <ImageView
                    android:id="@+id/ivBarcode"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginEnd="8dp"
                    android:padding="8dp"
                    android:src="@drawable/barcode"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintTop_toTopOf="parent" />

            </androidx.constraintlayout.widget.ConstraintLayout>

            <customViews.WrapHeightViewPager
                android:id="@+id/vpBanner"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="16dp"
                android:layout_marginRight="9dp"
                android:layout_marginLeft="9dp"
                app:layout_constraintTop_toBottomOf="@id/clSearch" />

            <com.tbuonomo.viewpagerdotsindicator.WormDotsIndicator
                android:id="@+id/worm_dots_indicator"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                app:dotsColor="@color/amaranth"
                app:dotsCornerRadius="8dp"
                app:dotsSize="8dp"
                app:dotsSpacing="6dp"
                app:dotsStrokeColor="@color/white"
                android:layout_marginBottom="8dp"
                android:visibility="gone"
                app:dotsStrokeWidth="1.5dp"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintBottom_toBottomOf="@id/vpBanner" />

            <com.google.android.material.tabs.TabLayout
                android:id="@+id/rtlHome"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_marginStart="20dp"
                android:layout_marginEnd="20dp"
                android:background="@color/porcelain"
                app:layout_constraintBottom_toBottomOf="@id/worm_dots_indicator"
                app:layout_constraintTop_toBottomOf="@id/worm_dots_indicator"
                app:tabIndicatorColor="@color/strawberry"
                app:tabIndicatorHeight="5dp"
                app:tabSelectedTextColor="@color/gunmetal"
                app:tabTextColor="@color/nevada" />

        </androidx.constraintlayout.widget.ConstraintLayout>

    </androidx.constraintlayout.widget.ConstraintLayout>

    <LinearLayout
        android:id="@+id/homeSearchBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:background="@drawable/toolbar_background"
        android:visibility="gone"
        app:layout_collapseMode="pin">

        <LinearLayout
            android:id="@+id/searchBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="15dp"
            android:background="@drawable/border_grey"
            android:orientation="horizontal"
            android:padding="8dp">

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:layout_weight="1"
                android:fontFamily="@font/montserrat_medium"
                android:text="@string/hint_search_bar"
                android:textColor="@color/submarine"
                android:textSize="13sp" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:src="@drawable/search_dark" />

        </LinearLayout>
    </LinearLayout>

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

<androidx.viewpager.widget.ViewPager
    android:id="@+id/vpHome"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginRight="4.5dp"
    android:layout_marginLeft="4.5dp"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />

<FrameLayout
    android:id="@+id/homeChildFragmentContainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

a child fragment xml which is scrollable

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:focusable="true">

<com.google.android.material.appbar.AppBarLayout
    android:id="@+id/appBarLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/background_grey">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/toolbar_background"
        android:clickable="true"
        android:focusable="true"
        android:orientation="horizontal"
        app:layout_collapseMode="parallax">

        <ImageView
            android:id="@+id/ivSecondaryBack"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:padding="15dp"
            android:src="@drawable/back"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <.customViews.ApTextView
            android:id="@+id/tvLeftTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_marginStart="8dp"
            android:layout_marginTop="16dp"
            android:layout_marginBottom="16dp"
            android:textColor="@color/gunmetal"
            android:visibility="gone"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toEndOf="@+id/ivSecondaryBack"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="1.0" />

        <customViews.ApTextView
            android:id="@+id/tvCenterTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_marginStart="8dp"
            android:layout_marginTop="16dp"
            android:layout_marginEnd="8dp"
            android:layout_marginBottom="16dp"
            android:textColor="@color/gunmetal"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@+id/ivSearch"
            app:layout_constraintStart_toEndOf="@+id/ivSecondaryBack"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="1.0" />

        <ImageView
            android:id="@+id/ivDropDownCategory"
            android:layout_width="wrap_content"
            android:layout_height="7dp"
            android:layout_centerVertical="true"
            android:layout_marginStart="8dp"
            android:layout_marginTop="16dp"
            android:layout_marginBottom="16dp"
            android:layout_toEndOf="@id/tvCenterTitle"
            android:src="@drawable/chevron_down"
            android:tint="@color/gunmetal"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toEndOf="@+id/tvCenterTitle"
            app:layout_constraintTop_toTopOf="parent" />

        <ImageView
            android:id="@+id/ivSearch"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_centerVertical="true"
            android:layout_margin="8dp"
            android:layout_marginTop="16dp"
            android:layout_marginEnd="8dp"
            android:padding="8dp"
            android:src="@drawable/search_dark"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    </androidx.constraintlayout.widget.ConstraintLayout>

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

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/background_grey"
    android:clickable="true"
    android:focusable="true"
    android:orientation="vertical"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <LinearLayout
        android:id="@+id/categorySelection"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:visibility="gone">

        <com.aigestudio.wheelpicker.WheelPicker
            android:id="@+id/categoryWheel"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="16dp"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            app:wheel_curved="true"
            app:wheel_data="@array/empty_array_for_wheel"
            app:wheel_indicator="true"
            app:wheel_indicator_color="@color/grass"
            app:wheel_indicator_size="1.5dp"
            app:wheel_item_text_color="@color/battleship_grey_two"
            app:wheel_item_text_size="18sp"
            app:wheel_selected_item_text_color="@color/dark_gunmetal"
            app:wheel_visible_item_count="5" />

        <customViews.ApButton
            android:id="@+id/btnSelectCategory"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="8dp"
            android:layout_marginBottom="20dp"
            android:background="@drawable/btn_green_background"
            android:fontFamily="@font/montserrat_semibold"
            android:padding="16dp"
            android:text="@string/text_ok"
            android:textAllCaps="true"
            android:textColor="@color/white"
            android:textSize="12sp" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="?android:attr/actionBarSize"
            android:background="@color/gunmetal"
            android:padding="8dp">

            <com.google.android.material.tabs.TabLayout
                android:id="@+id/tlSubCategories"
                style="@style/Widget.Design.TabLayout"
                android:layout_width="match_parent"
                android:layout_height="?android:attr/actionBarSize"
                app:tabBackground="@drawable/search_category_selector"
                app:tabIndicatorColor="@color/transparent"
                app:tabMode="scrollable"
                app:tabRippleColor="@color/transparent"
                app:tabSelectedTextColor="@color/white"
                app:tabTextAppearance="@style/CategoryTabTextStyle"
                app:tabTextColor="@color/white" />

        </RelativeLayout>


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginTop="16dp"
            android:layout_marginEnd="16dp"
            android:orientation="horizontal">

            <customViews.ApTextView
                android:id="@+id/tvItemsCount"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:fontFamily="@font/montserrat_medium"
                android:text="@string/placeholder_item_count_search_result"
                android:textColor="@color/gunmetal"
                android:textSize="11sp" />

            <customViews.ApTextView
                android:id="@+id/btnFilters"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:drawableEnd="@drawable/filter"
                android:drawablePadding="4dp"
                android:fontFamily="@font/montserrat_medium"
                android:text="@string/text_go_to_filters"
                android:textColor="@color/gunmetal"
                android:textSize="13sp" />

        </LinearLayout>

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:layout_marginTop="16dp"
            android:background="@color/submarine" />

    </LinearLayout>


    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rvProducts"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clipToPadding="false"
        android:paddingBottom="12dp" />
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

and a child with an unscrollable root layout

<RelativeLayout 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:background="@color/white"
android:clickable="true">

<LinearLayout
    android:id="@+id/rlEmptyCart"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:orientation="vertical"
    android:visibility="visible">

    <customViews.ApTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="30dp"
        android:gravity="center"
        android:text="@string/text_no_product"
        android:textColor="@color/gunmetal"
        android:textSize="20sp"
        app:fontFamily="@font/montserrat_extrabold" />

    <customViews.ApTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="10dp"
        android:gravity="center" />

    <TextView
        android:id="@+id/tvBack"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="@string/button_back_to_reyon" />
</LinearLayout>

</RelativeLayout>

what can i do to fix this?

Ali güvenç
  • 147
  • 1
  • 6

1 Answers1

0

everything that you need to be scrolled go to Inside NestedScrollView+LinearLayout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:text="This is Cannot be Scrollable"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
        
    </LinearLayout>

    <androidx.core.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            
            <TextView
                android:text="This is Can be Scrollable"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>
            
        </LinearLayout>
    </androidx.core.widget.NestedScrollView>

    

</RelativeLayout>