【发布时间】:2016-12-30 09:19:25
【问题描述】:
我想实现一个屏幕,其中有一个包含 RecyclerView 的卡片视图。
CardView 应该与 recycler view 的内容高度相同,这意味着如果 RecyclerView 有很少的项目,我应该看到卡片的底角和底部阴影,但如果 RecyclerView 有很多项目,则卡片视图应与 RecyclerView 一起“滚动”,以使卡片视图的底角和阴影位于 RecylerView 的底部。
当用户开始滚动时,顶角会随着 RecyclerView 的滚动而消失:
最后,当用户到达 RecyclerView 的底部时,会出现 CardView 的底角和阴影:
从现在开始,我设法通过将 RecyclerView 放在 CardView 中并将 CardView 放在 NestedScrollView 中来实现有效的实现,但这会破坏投掷手势......
<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:clipChildren="false"
android:id="@+id/containerLayout"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
tools:ignore="MissingPrefix">
<android.support.v4.widget.NestedScrollView
android:clipToPadding="false"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:paddingBottom="16dp"
android:paddingLeft="85dp"
android:paddingRight="85dp"
android:paddingTop="16dp">
<android.support.v7.widget.CardView
android:layout_height="wrap_content"
android:layout_width="match_parent"
app:cardBackgroundColor="?android:attr/windowBackground">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_height="wrap_content"
android:layout_width="match_parent"/>
</android.support.v7.widget.CardView>
</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
您对我如何实现这样的设计有任何提示或想法吗?我想 CoordinatorLayout 可以帮助我,但我找不到任何东西......
谢谢
【问题讨论】:
-
我面临同样的问题。
android:nestedScrollingEnabled="false"修复了投掷手势,但是如果您的 RecyclerView 足够大,界面就会超级滞后。你在这方面有什么进展吗? -
@pdegand59 我正在考虑一个没有 NestedScrollView 的解决方案,但在
RecyclerView中添加一个滚动侦听器。当您从下向上滚动时,CardView将离开您的屏幕;当您到达项目的末尾时,将显示底部。这可以通过使用cardView.animate().y(theNewPosition).setDuration(0).start()来实现。这只是一个想法,我没有在代码上测试过。 -
请注意,在
NestedScrollView中使用RecyclerView就像在ScrollView中使用LinearLayout。不会有回收,RecyclerView会有 itemHeight*itemCount 的高度。如果您不担心,请将NestedScrollView替换为ScrollView,您将拥有一掷千金的手势。 -
另一个不太优雅的想法是重写回收适配器,使第一个和最后一个项目具有圆角,并且这个额外的空间具有透明背景。
标签: android android-recyclerview scrollview cardview