Android scrolling function in cardView + RecyclerV

2019-05-27 13:11发布

问题:

In my application I have first the cardview and then RecyclerView. Using my existing code I am able to scroll the whole page. But I want that I can also scroll only the card view items. Currently when I try to scroll cardview the complete layout is scrolled.

My current code:-

<android.support.design.widget.AppBarLayout
    android:id="@+id/app_bar_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    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="match_parent"
        app:layout_scrollFlags="scroll|exitUntilCollapsed"
        app:contentScrim="?attr/colorPrimary"
        app:expandedTitleMarginStart="48dp"
        app:expandedTitleMarginEnd="64dp"
        android:fitsSystemWindows="true">

        <android.support.v7.widget.CardView style="@style/Card">

            <LinearLayout style="@style/CardContainer"
                android:isScrollContainer="true">


                    <com.greenfrvr.hashtagview.HashtagView
                        android:id="@+id/hashtags6"
                        style="@style/HashtagView"
                        app:rowGravity="center"
                        app:rowMode="stretch"
                        app:selectionMode="true"
                        app:tagBackground="@drawable/item_bg_1"
                        app:tagForeground="@drawable/flat_button_light"
                        app:tagPaddingBottom="@dimen/padding_vertical"
                        app:tagPaddingLeft="@dimen/padding_horizontal"
                        app:tagPaddingRight="@dimen/padding_horizontal"
                        app:tagPaddingTop="@dimen/padding_vertical"
                        app:tagTextColor="#E5E5E5" />



            </LinearLayout>
        </android.support.v7.widget.CardView>




        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            app:layout_collapseMode="pin" />

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


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




    <android.support.v7.widget.RecyclerView
    android:id="@+id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />

回答1:

Although google emphatically recommends avoiding making a card scrollable (see this article https://material.google.com/components/cards.html#cards-behavior)

All you really have to do is wrap the contents of your card with a ScrollView.

https://developer.android.com/reference/android/widget/ScrollView.html

If your design allows it, I recommend that you place a an action button at the bottom of the card that expands it and contracts it when it is clicked.