Android 当不使用WrAPX内容时,RealdReVIEW在中间开始

Android 当不使用WrAPX内容时,RealdReVIEW在中间开始,android,kotlin,Android,Kotlin,我有一个RecyclerView在一个ConstraintLayout的内部,我需要将高度设置为0dp,这样它就尊重了它的约束,而不会进入其他视图。但是一旦加载了列表,它就会被设置到列表的中间。 如果我将高度设置为wrap_content,则问题已得到解决,但它看起来并不正确,因为它填充了屏幕,并位于其他视图下 我甚至尝试在框架布局中包装RV,这样我就可以将RV设置为包装内容,并且仍然使其尊重约束,但这需要我发布一个约束(中间的加载) 我知道我可以使用scrollToPosition(),但是当

我有一个
RecyclerView
在一个
ConstraintLayout
的内部,我需要将高度设置为0dp,这样它就尊重了它的约束,而不会进入其他视图。但是一旦加载了列表,它就会被设置到列表的中间。 如果我将高度设置为
wrap_content
,则问题已得到解决,但它看起来并不正确,因为它填充了屏幕,并位于其他视图下 我甚至尝试在
框架布局中包装RV,这样我就可以将RV设置为包装内容,并且仍然使其尊重约束,但这需要我发布一个约束(中间的加载)

我知道我可以使用
scrollToPosition()
,但是当有图像出现在列表中时,我必须等到它们都加载完毕后才能调用它,这需要几秒钟的时间,用户会感到口吃

更新I最初将高度设置为0dp,这将导致列表开始滚动到中间。后来,我将其设置为包装内容并匹配父视图,这将导致列表跨越整个宽度或窗口,并与容器中的其他视图重叠

注意:

stackFromEnd = true 
当stackFromEnd为true时,列表将从视图底部开始填充其内容。

注意:

stackFromEnd = true 

当stackFromEnd为true时,列表将从视图底部开始填充其内容。

只需将您的回收视图高度设置为0dp

<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>

只需将您的回收视图高度设置为0dp

<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>

您已将约束设置为父视图的顶部和底部,因此视图将延伸到顶部和底部。您需要如下设置约束

<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="@id/your_above_view_id"
        app:layout_constraintBottom_toTopOf="@id/your_below_view_id"
        android:layout_marginBottom="10dp" />
  <view below>
</ConstraintLayout>

您已将约束设置为父视图的顶部和底部,因此视图将延伸到顶部和底部。您需要如下设置约束

<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="@id/your_above_view_id"
        app:layout_constraintBottom_toTopOf="@id/your_below_view_id"
        android:layout_marginBottom="10dp" />
  <view below>
</ConstraintLayout>

结果表明,如果将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" />

结果表明,如果将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" />


“但是一旦加载了列表,它就会被设置到列表的中间。”我不明白。另外,如果你把高度设为0,你能提供一些图像吗?如果你把高度设为0,那么当你把它改为包装内容时会发生什么?把你的recyclerview的高度设为0dp..@dglozano列表会开始滚动到中间,“但是一旦加载了列表,它就会被设置到列表的中间。”我不明白。此外,如果将高度设置为0,您能否提供一些图像,说明现在发生的情况,以及将其设置为“包装内容”时发生的情况?将recyclerview的高度设置为0dp..@dglozano列表将开始滚动到中间