当与viewpager和recyclerview一起使用时,CollapsingToolbarLayout的部分内容在顶部变得发粘

问题描述 投票:6回答:1

我正在尝试实现这样的布局:

enter image description here

问题是,向上滚动卡时,触摸了工具栏,它不再像这样上升:enter image description here

我希望它向上滚动直到viewpager填满屏幕,即至少矩形卡应该向上滚动到工具栏之外(即使tabLayout也可以向上滚动)。但我不希望它在顶部保持粘性。

主要布局在这里:

 <?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:showIn="@layout/activity_main">

    <com.google.android.material.appbar.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/background_dark"
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

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

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="190dp"
                android:minHeight="190dp"
                android:src="@drawable/ic_launcher_foreground"
                app:layout_collapseMode="parallax" />


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

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


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


    <androidx.core.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true"
        app:behavior_overlapTop="90dp"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <LinearLayout
            android:id="@+id/lin"
            android:nestedScrollingEnabled="false"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <include layout="@layout/debit_card_item" />


            <com.google.android.material.tabs.TabLayout
                android:id="@+id/tabLayout"
                android:layout_width="match_parent"
                android:layout_height="?actionBarSize"
                android:layout_marginTop="40dp"
                android:background="?attr/colorPrimary" />


            <androidx.viewpager.widget.ViewPager
                android:id="@+id/viewPager"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1" />

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

分页器的片段在NestedScrollView中,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rcView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</androidx.core.widget.NestedScrollView>

我尝试过的事情:

  1. 我已尝试删除线性布局上方的NestedScrollView,并将app:behavior_overlapTop="90dp" app:layout_behavior="@string/appbar_scrolling_view_behavior"添加到线性布局。但它仍然给我相同的输出。
  2. 静态设置视图寻呼机的高度(得到相同的结果)。

我在此处添加了示例项目:github link

android android-recyclerview android-viewpager android-collapsingtoolbarlayout android-nestedscrollview
1个回答
0
投票
为了达到这种效果,卡片布局应在折叠式工具栏中。

尝试替换此:

<ImageView android:layout_width="match_parent" android:layout_height="190dp" android:minHeight="190dp" android:src="@drawable/ic_launcher_foreground" app:layout_collapseMode="parallax" />

with:

<include layout="@layout/debit_card_item" android:layout_width="match_parent" android:layout_height="190dp" android:minHeight="190dp" android:layout_marginTop="32dp" android:layout_marginBottom="72dp" app:layout_collapseMode="parallax"/>

并在NestedScrollView中删除<include layout="@layout/debit_card_item" />

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.