gpt4 book ai didi

android - 不使用 wrap_content 时 RecyclerView 在中间启动

转载 作者:行者123 更新时间:2023-11-29 23:25:35 25 4
gpt4 key购买 nike

我在 ConstraintLayout 中有一个 RecyclerView,我需要将高度设置为 0dp,以便它遵守其约束并且不会进入其他 View 。但是一旦列表被加载,它就会被设置到列表的中间。如果我将高度设置为 wrap_content,问题就解决了,但是它看起来不对,因为它填满了屏幕并且在其他 View 下方我什至尝试将 RV 包装在 FrameLayout 中,这样我就可以将我的 RV 设置为包装内容并仍然遵守约束,但这让我不得不发布一个(在中间加载)。

<ConstraintLayout>
<view above>
<android.support.v7.widget.RecyclerView
android:id="@+id/messagesRecyclerView"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="view above"
app:layout_constraintBottom_toTopOf="view below"
android:layout_marginBottom="10dp" />
<view below>
</ConstraintLayout>

以及我设置 RV 的代码:

with(recyclerView){
setHasFixedSize(true)
overScrollMode = View.OVER_SCROLL_NEVER
setLayoutManager(LinearLayoutManager(context).apply { stackFromEnd = true })
setAdapter(adapter)
setItemAnimator(itemAnimator)
}

我知道我可以使用 scrollToPosition(),但是当列表中有图像时,我必须等到它们全部加载完毕才能调用它,这需要一些时间秒,它向用户显示为口吃。

更新 我最初将高度设置为 0dp,这会导致列表开始滚动到中间。后来我将它设置为 wrap_content 和 match_parent,这将导致列表跨越整个宽度或窗口并与容器中的其他 View 重叠。

最佳答案

事实证明,如果将 RV (RecyclerView) 高度设置为 0dp(又名匹配约束),则还必须将宽度也设置为 0dp。这是一个 Android 错误。

这是修复它的代码:

<android.support.v7.widget.RecyclerView
android:id="@+id/messagesRecyclerView"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="[view above]"
app:layout_constraintBottom_toTopOf="[view below]"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginBottom="10dp" />

关于android - 不使用 wrap_content 时 RecyclerView 在中间启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53642633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com