RecyclerView的最后一项被切断on片段的恢复

时间:2019-06-30 06:37:25

标签: android android-recyclerview android-tablayout android-collapsingtoolbarlayout recyclerview-layout

问题

RecyclerView正常运行,并且在不打开detailFragment时不会剪切任何视图。但是,每当我从RecylerView项目启动的detailFragment返回时,它就会切断我的recylcerview项目的最后一项。

我仅在api 26的仿真器上遇到此问题。当我在api 28手机中运行它时,它可以正常工作。但是我想我可能会丢失一些东西。

fragment_main

<?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:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            android:background="@color/colorWhite">

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

            <com.google.android.material.appbar.CollapsingToolbarLayout
                    android:id="@+id/fragment_main_ctbl"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:layout_scrollFlags="scroll|exitUntilCollapsed"
                    app:contentScrim="@android:color/white"
                    app:expandedTitleTextAppearance="@color/colorPrimaryText"
                    android:fitsSystemWindows="true">

                <include layout="@layout/header_fragment_main"
                         app:layout_collapseMode="parallax"/>

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

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

            <com.google.android.material.tabs.TabLayout
                    android:id="@+id/fragment_main_tl"
                    android:layout_width="match_parent"
                    android:layout_height="@dimen/fragment_main_tl_height"
                    app:tabMode="scrollable"
                    app:tabSelectedTextColor="@color/colorPrimary"
                    app:tabTextColor="@color/colorUnselected"/>

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


        <androidx.viewpager.widget.ViewPager
                android:id="@+id/fragment_main_vp"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
             app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"/>

    </androidx.coordinatorlayout.widget.CoordinatorLayout>

fragment_child

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:background="@android:color/white"
        >

    <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/fragment_child_rv"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:clipToPadding="false"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

注意

  • 我希望不要为我的recyclerView添加底部填充。我试过了 这样就可以了,但是在我的recyclerView起作用的时候 正确地在底部看到多余的填充
  • 如果可能的话,我不希望在nestedScrollView上使用recyclerView,因为我希望recyclerView尽可能回收利用

1 个答案:

答案 0 :(得分:0)

替换

app:layout_scrollFlags="scroll|exitUntilCollapsed"

使用

app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed" 

解决了我的问题。