FutureMind / recycler-fast-scroll

Provides fast scroll and section idexer for recycler view
Apache License 2.0
492 stars 105 forks source link

Scrollbar not visible when used inside Nested Scroll View #53

Open amrfarid140 opened 7 years ago

amrfarid140 commented 7 years ago

In my Project, I am using CoordinatorLayout + AppbarLayout + CollapsingToolbarLayout... here is the XML for MainActivity:

<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".MainActivity">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/main_appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/main_collapsing"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:collapsedTitleGravity="left|center_vertical">

        <FrameLayout
                android:id="@+id/header_fragment_container"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:layout_collapseMode="parallax"
                app:layout_collapseParallaxMultiplier="0.7"
                android:paddingTop="50dp">

            </FrameLayout>

            <android.support.v7.widget.Toolbar
                android:id="@+id/drawer_toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin"
                app:theme="@style/ToolbarColoredBackArrow"
                app:popupTheme="@style/AppTheme.PopupOverlay" >
                </android.support.v7.widget.Toolbar>

        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context=".MainActivity"
    tools:showIn="@layout/app_bar_main"
    android:scrollbars="vertical"
    android:fillViewport="true"
    android:id="@+id/content_main_scroll_view"
    >

    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/white"
        android:fitsSystemWindows="true"
        />
</android.support.v4.widget.NestedScrollView>

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/main_fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/fab_margin"
        android:src="@drawable/ic_directions"
        app:layout_anchor="@id/main_appbar"
        app:layout_anchorGravity="bottom|end" />

</android.support.design.widget.CoordinatorLayout 

Now I use your scrollbar in one of the fragments with a recyclerView .. fragment XML is


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

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <controls.CustomFontTextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="20dp"
            android:text="Title: "
            android:textColor="@android:color/black"
            android:textSize="16sp" />

        <Spinner
            android:id="@+id/title_spinner"
            android:layout_width="fill_parent"
            android:layout_height="40dp"
            android:layout_margin="20dp"
            android:background="@drawable/spinner" />
    </LinearLayout>

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.v7.widget.RecyclerView
            android:id="@+id/staff_directory_recycler_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fastScrollEnabled="true"
            />

        <com.futuremind.recyclerviewfastscroll.FastScroller
            android:id="@+id/fastscroll"
            android:orientation="vertical"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_alignParentRight="true"/>

    </RelativeLayout>

</LinearLayout>

Currently, I do exactly as you mentioned in the Wiki to initialize YOUR scrollView. However, it doesn't appear at all.

I would appreciate if you pointed me to the fix.

micHar commented 7 years ago

Do you have enough items in your recycler adapter? It has a mechanism which hides it unless there is something to scroll.

Otherwise, did you try to use it outside of NestedScrollView and it does work? Why do you think it's a problem with that particular widget?

amrfarid140 commented 7 years ago

Yes there is enough items in the adapter. I can see them all loaded. I assumed it's the NestedScrollView as the scrollbar for it shows instead of the alphabetical scrollbar.

Anyways I will try it outside the NestedScrollView and see if it will work.

Thanks for your reply.

yenenahmet commented 6 years ago

+++ there is also the same problem i have unfortunately not working