水平 RecyclerView 不环绕布局

Posted

技术标签:

【中文标题】水平 RecyclerView 不环绕布局【英文标题】:Horizontal RecyclerView not wrapping layout 【发布时间】:2016-07-16 16:54:53 【问题描述】:

每个项目应覆盖屏幕宽度的 70%。虽然 70% 的屏幕被填满,但我得到了 30% 的空白空间,下一个项目在它之后开始。 这是布局 -

<?xml version="1.0" encoding="utf-8"?>
<android.support.percent.PercentRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:orientation="horizontal">

    <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_
        android:layout_
        android:layout_gravity="center"
        android:layout_weight="4"
        app:cardCornerRadius="2dp"
        app:cardElevation="2dp"
        app:cardPreventCornerOverlap="false"
        app:cardUseCompatPadding="true"
        app:contentPadding="2dp"
        app:layout_widthPercent="70%">

        <FrameLayout
            android:layout_
            android:layout_
            android:layout_gravity="center"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/image_test"
                android:layout_
                android:layout_
                android:scaleType="centerCrop"/>

        </FrameLayout>
    </android.support.v7.widget.CardView>
</android.support.percent.PercentRelativeLayout>

【问题讨论】:

尝试将app:layout_widthPercent="70%"设置为您的PercentRelativeLayout并将CardView设置为match_parent 问题不在于这个布局,而在于包含recyvlerview的布局。如果您在其中任何地方添加了 layout_margintop 任何类似的内容,请删除它 @IvanIvanov 如何为 PercentRelativeLayout 本身提供百分比宽度。我上次检查百分比是相对的。 【参考方案1】:

之前Android Support Library, revision 23.2.1recyclerView 没有考虑他的itemView 的height(vertical) 或width(Horizo​​ntal)。它总是把它包起来。

但现在它考虑高度或宽度。在你的情况下,它是宽度。

所以,让你的 layout_widthmatch_parentwrap_content

【讨论】:

recyclerview 的layout_width ? 子项是PercentRelativeLayout,使其包裹不会使其布局占其父项的 70%。它的match_parent 是有原因的,这样子项可以占据屏幕的 70%。 在这种情况下,您需要解决问题,因为它不知道 match_parent 的大小。设置 match_parent 时可能会采用默认的最大宽度。您可以手动计算百分比并将其设置为您在 onCreateVeiwHolder 中的 cardView。

以上是关于水平 RecyclerView 不环绕布局的主要内容,如果未能解决你的问题,请参考以下文章

Android 布局:具有滚动行为的 Viewpager 内的垂直 Recyclerview 内的水平 Recyclerview

在水平和垂直的recyclerview中膨胀布局,具有recycler视图的FlexboxLayout添加视图水平自动垂直

ListView布局高度与Fragment中的RecyclerView内的父级不匹配

Android RecyclerView

RecyclerView中的彩色线条

带有水平溢出的Android垂直recyclerview