向上滑动时向上滑动 RecyclerView,向下滑动时向下滑动 RecyclerView
Slide RecyclerView up as you swipe it up, or slide recyclerview down as you swipe down
我想创建一个 Fragment
,其中 RecyclerView
向上滑动并在向上滑动时显示更多项目。
这是我所说的一个例子。
初始创建:
用户向上滑动 RecyclerView
,显示更多项目:
有几个问题,我不想使用 CoordinatorLayout
,我想将其设置为 RecyclerView
中的项目直接堆叠在 EditText
.
这是我正在使用的布局代码:
<android.support.design.widget.CoordinatorLayout
android:id="@+id/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:visibility="visible">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="400dp"
android:background="@android:color/transparent"
android:fitsSystemWindows="true"
android:orientation="vertical">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsingToolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<View
android:id="@+id/emptyView"
android:layout_width="match_parent"
android:layout_height="400dp"
android:background="@android:color/transparent"
app:layout_collapseMode="parallax"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:id="@+id/editText"
android:paddingLeft="16dp"
android:inputType="textAutoCorrect"
android:layout_centerVertical="true"
android:background="@android:color/transparent"
android:layout_width="match_parent"
android:layout_height="56dp"/>
</RelativeLayout>
</RelativeLayout>
我得到这样的结果:
这绝对是不可扩展的,需要对空视图进行一致的测量。
对 2 种类型的行使用 RecyclerView
:
- 空 row/rows 灰色(无分隔线)
- 具有您已有内容的行
RecyclerView
将不得不 match_parent 到整个片段
因此您将在 RecyclerView
.
顶部获得 "blank" 区域的正确效果
您可以使用 setReverseLayout 的 LinearLayoutManager
Used to reverse item traversal and layout order. This behaves similar
to the layout change for RTL views. When set to true, first item is
laid out at the end of the UI, second item is laid out before it etc.
For horizontal layouts, it depends on the layout direction. When set
to true, If RecyclerView is LTR, than it will layout from RTL, if
RecyclerView} is RTL, it will layout from LTR. If you are looking for
the exact same behavior of setStackFromBottom(boolean), use
setStackFromEnd(boolean)
我通过使用自定义 TouchListener
解决了这个问题,所有其他解决方案都非常基础,仅限于特定的盒装用例。
我这样做的方法是基于这个库实现一个新的 TouchListener
:
我得到以下结果:
我想创建一个 Fragment
,其中 RecyclerView
向上滑动并在向上滑动时显示更多项目。
这是我所说的一个例子。
初始创建:
用户向上滑动 RecyclerView
,显示更多项目:
有几个问题,我不想使用 CoordinatorLayout
,我想将其设置为 RecyclerView
中的项目直接堆叠在 EditText
.
这是我正在使用的布局代码:
<android.support.design.widget.CoordinatorLayout
android:id="@+id/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:visibility="visible">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="400dp"
android:background="@android:color/transparent"
android:fitsSystemWindows="true"
android:orientation="vertical">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsingToolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<View
android:id="@+id/emptyView"
android:layout_width="match_parent"
android:layout_height="400dp"
android:background="@android:color/transparent"
app:layout_collapseMode="parallax"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:id="@+id/editText"
android:paddingLeft="16dp"
android:inputType="textAutoCorrect"
android:layout_centerVertical="true"
android:background="@android:color/transparent"
android:layout_width="match_parent"
android:layout_height="56dp"/>
</RelativeLayout>
</RelativeLayout>
我得到这样的结果:
这绝对是不可扩展的,需要对空视图进行一致的测量。
对 2 种类型的行使用 RecyclerView
:
- 空 row/rows 灰色(无分隔线)
- 具有您已有内容的行
RecyclerView
将不得不 match_parent 到整个片段
因此您将在 RecyclerView
.
您可以使用 setReverseLayout 的 LinearLayoutManager
Used to reverse item traversal and layout order. This behaves similar to the layout change for RTL views. When set to true, first item is laid out at the end of the UI, second item is laid out before it etc. For horizontal layouts, it depends on the layout direction. When set to true, If RecyclerView is LTR, than it will layout from RTL, if RecyclerView} is RTL, it will layout from LTR. If you are looking for the exact same behavior of setStackFromBottom(boolean), use setStackFromEnd(boolean)
我通过使用自定义 TouchListener
解决了这个问题,所有其他解决方案都非常基础,仅限于特定的盒装用例。
我这样做的方法是基于这个库实现一个新的 TouchListener
:
我得到以下结果: