在onCreateViewHolder中膨胀的My Recycler Item
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:padding="16dp">
<ImageView
android:id="@+id/gridListImageView"
android:layout_width="96dp"
android:layout_height="96dp"
android:src="@drawable/a" />
<TextView
android:id="@+id/gridListView_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
I want to display something like this Which has one row of half the height of recycler查看?并添加填充到其余的空间?我可以使用GridLayoutManager吗?
这是我的GridLayoutManager
GridLayoutManager glm = new GridLayoutManager(getActivity(), 2);
recyclerView.setLayoutManager(glm);
9条答案
按热度按时间jljoyd4f1#
当在adapter中扩展视图的布局时,您可以通过编程方式设置它们的高度。为了评估要使用的适当高度,您可以依赖父ViewGroup(即RecyclerView本身)。下面是一个示例:
希望这能帮上忙。
k2fxgqgv2#
自支持库25.1.0起,以上答案不起作用。我建议进行以下修改:
ve7v8dk23#
您不需要设置项目的高度。这里的问题是图像试图填充所有的空间。只需将
android:adjustViewBounds="true"
添加到ImageView,它不会添加空格afdcj2ne4#
在
onCreateViewHolder
内部,只需或
vxbzzdmp5#
Kotlin版本
这里3是
GridLayoutManager
的跨度计数。如果不使用数据绑定,可以将binding.root
替换为itemView
h43kikqp6#
有时,在适配器中获取充气视图大小返回0或负值。另一种方法是从适配器外部获取所需的大小,对其进行操作并将其设置到视图中。在我例子中,另一个问题是大小设置无效。所以我用布局参数设置尺寸
下面是在活动中设置适配器:
我这样设置视图大小:
并且不要忘记在布局中设置高度以进行初始化
5tmbdcev7#
在最近的API级别(当前为25)上,onCreateViewHolder中距回收器的高度始终为空。这段代码用于在调用回收器视图的onMeasure后设置高度,并为膨胀的列表视图设置正确的高度。
hrirmatl8#
这是我的代码,用于根据实际的纵横比调整回收视图元素的高度。
ne5o7dgx9#
我有一个类似的要求,需要一个动态的高度为每一行在网格中的能力,以添加和删除项目的RecyclerView以及。在
onCreateViewHolder
中设置高度布局参数的问题是,当从RecyclerView中添加/删除一个项目时,该视图被回收,并且不再调用onCreateViewHolder
,而是重用池中的视图(如果可用),布局管理器将计算项目的高度/宽度,我们将丢失原始的预期高度/宽度。宽度设置在onCreateViewHolder
中。下面的方法可能会帮助那些面临类似问题的人。
这里的关键步骤是扩展
GridLayoutManager
并覆盖以下内容-generateDefaultLayoutParams
generateLayoutParams
checkLayoutParams
布局管理器看起来像这样-
这里
x
和y
可以是您需要提供的像素高度。