- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我需要在线性布局中显示交错网格。
为此,我在 android.support.v7.widget
的 RecyclerView
上使用了 StaggeredGridLayoutManager
。问题是 StaggeredGridLayoutManager
不支持 wrap_content
。
还有其他问题解决这个问题,但它们与线性布局有关,而不是交错网格:
据我所知,我可以派生 StaggeredGridLayoutManager
并实现 onMeasure
。有没有办法在不自己重新计算 child 的位置和大小的情况下做到这一点?查看 StaggeredGridLayoutManager.java source 时,我可以看到它使用 ScrollbarHelper
来近似滚动内容的大小。有没有办法重用它?
最佳答案
问题在于,当绘制 RecyclerView 时,它会在绘制下一个元素之前自行计算所有剩余大小,并且在绘制其他元素后不再重新计算,将它们留在屏幕之外。
这个问题有一个简单的解决方法:诀窍是先绘制所有其他元素,最后留下 RecyclerView。使用相对布局并将 RecyclerView 放在 XML 布局文件的最后。由于使用相对布局,您可以独立于 XML 文件中的顺序将每个元素放在任何您想要的位置,您将在 RecyclerView 之前绘制所有元素,这将使其计算准确的剩余空间并且 wrap_content 将正常工作。
在 RecyclerView 下方添加分页栏的示例:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
tools:context=".MainActivity"
>
<LinearLayout
android:id="@+id/pagination_btns"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentBottom="true"> //HERE YOU ALIGN THIS ELEMENT TO THE BOTTOM OF THE PARENT
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/previous_btn_label"/>
<Space
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"/>
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/next_btn_label"/>
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/items_recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical"
android:layout_above="@id/pagination_btns"/> //HERE YOU ALIGN THE RECYCLERVIEW ABOVE THE PAGINATION BAR
</RelativeLayout>
关于android - 使 StaggeredGridLayout 包装内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29118146/
我有一个 URL 列表,这些 URL 指向具有不同尺寸的图像。我想在交错的垂直网格中显示它们,拉伸(stretch)每个图像的宽度以占据一行并拉伸(stretch)高度以环绕缩放图像。一切都应该看起来
我为我的 RecyclerView 制作了这个 StaggeredGridLayout: 代码如下: @Override public void onBindViewHolder(RecyclerV
我需要在线性布局中显示交错网格。 为此,我在 android.support.v7.widget 的 RecyclerView 上使用了 StaggeredGridLayoutManager。问题是
我有一个包含 ImageView 的 recyclerview。但每个图像的底部都有额外的空间。额外的空间是红色背景,如屏幕截图中所示。我希望所有图像并排放置。 这是我的 Activity 中用于定义
我正在使用交错网格布局从数据库向回收者 View 显示数据。我遇到了一个问题,在从数据库中删除项目以及从适配器中删除位置后,我遇到了一些项目渲染问题。就像分散的所有在这个地方。这是我的代码 @Ove
我在我的Recycler View中使用StaggeredGridLayout 我需要什么: 我可以将回收器 View 分为两列,但我不知道如何将主单元格放在回收器 View 的顶部 我不确定,但也许
我有一个 StaggeredGridLayoutManager,它在一个 2 列宽的网格中加载 20 张包含图像(从缓存、网络或 Picasso 存储加载)的卡片。 问题: 目前,当您向下滚动列表时,
我需要从网络下载图片,为此我使用了 Glide。 下载图像后,它们出现在 Recycler Veiw 中。部分图像看起来不错,并且像这样填充所有单元格 但是有些图像在其他方面表现出奇怪的行为,看起来像
我是一名优秀的程序员,十分优秀!