我正在使用RecyclerView,它将用于加载可能的许多图像,我希望在RecyclerView上方有一个操作栏,如下所示:
但是我也希望操作栏的顶部只有灰色背景。如果用户滚动,则应该完全透明,如下所示:
通过使用此布局作为我的布局,我已经实现了自己想要的(有一个主要问题):
fragment_recycler_gallery.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView 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"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- Gray bar at top -->
<View
android:id="@+id/gray_bar"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@null" />
<android.support.v7.widget.RecyclerView 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:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
NestedScrollView是使整个片段(而不是仅RecyclerView)滚动的关键,但是当加载大量图像(500幅以上)时,它会使我的应用变慢或无响应。有没有更好的方法来创建我想要的东西?我曾尝试找到解决方案,但我所能找到的就是在没有提供任何其他解决方案的情况下“不要在nestedScrollViews中使用recyclerviews”。
如果要紧的话,我正在使用Glide将图像加载到每个ImageView中(在recyclerview中)。
我已经在RecyclerView上使用了它:
mAlbumRecyclerView.setNestedScrollingEnabled(false);
答案 0 :(得分:3)
每次在RecyclerView上使用wrap_content
时,您都会遇到性能问题。使用wrap_content
会完全破坏您从回收视图获得的性能改进。因此,问题来了,如何在不使用wrap_content
的情况下做自己想做的事情。
您可以做的一件事是使用FrameLayout
在Toolbar
顶部覆盖RecyclerView
,然后在RecyclerView
上使用填充(与{{ 1}}),以使东西出现在操作栏下方开始。只要您的工具栏具有半透明的背景色,滚动时您的recyclerview内容就会显示在其下方。
android:clipToPadding="false"