Recyclerview 项目没有以相同的高度显示

Posted

技术标签:

【中文标题】Recyclerview 项目没有以相同的高度显示【英文标题】:Recyclerview items not showing with the same height 【发布时间】:2019-06-21 08:16:19 【问题描述】:

This is my app where is the problem exists

I want my items to fit like this app

我正在使用RecyclerViewGridLayoutManager。我在图像中看到的问题是,当其中一个项目的文本较长时,网格项目的高度不同。我正在从 firebase 加载数据,并在列表中有数据时通知Adapter。我尝试了一切,但找不到像附加的第二张图片一样自动调整项目的解决方案。请帮忙?

这是我的 recyclerview 项目布局

<FrameLayout
    android:layout_
    android:layout_
    android:layoutDirection="rtl"
    >



    <android.support.v7.widget.CardView
        android:layout_
        android:layout_
        app:cardCornerRadius="10dp"
        android:layout_margin="5dp"
        app:cardBackgroundColor="#fff"
        app:cardElevation="5dp"
        >

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android" android:layout_
            android:layout_
            android:gravity="center"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/cartoonImg"
                android:layout_
                android:layout_
                android:scaleType="fitXY"
                app:imgUrl="@cartoon.thumb"
                />

            <TextView
                android:layout_
                android:layout_
                tool:text="Cartoon Name"
                android:gravity="center"
                android:layout_marginTop="5dp"
                android:layout_marginBottom="5dp"
                android:layout_marginRight="2dp"
                android:layout_marginLeft="2dp"
                android:textColor="@color/colorPrimary"
                android:text="@cartoon.title" />

        </LinearLayout>

    </android.support.v7.widget.CardView>

</FrameLayout>

【问题讨论】:

嗨,欢迎来到 ***。请提供recyclerviewitem.xml的布局 你需要更改height of the item wrap_content to 100sp or what ever you liked 我添加了我的 recyclerview 项目布局 ankuranurag2 Vishal Yadav 我想要一种自动调整方式而不是固定尺寸。 【参考方案1】:

这将完全满足您的需求

尝试用这个替换你的TextView

           <TextView
                android:layout_
                android:layout_
                tool:text="Cartoon Name"
                android:gravity="center"
                android:minLines="2"
                android:maxLines="2"
                android:ellipsize="end"
                android:layout_marginTop="5dp"
                android:layout_marginBottom="5dp"
                android:layout_marginRight="2dp"
                android:layout_marginLeft="2dp"
                android:textColor="@color/colorPrimary"
                android:text="@cartoon.title" />

【讨论】:

即使没有需要这两行的标题,它也会始终显示该空间,我猜他想要动态,如果只有一个项目是两行,则全部为 2 行,否则为 1 行和正常高度【参考方案2】:

你正在使用这条线

android:layout_

在您的CardView 上,并且由于后代有match_parent,因此您的TextView 的大小会发生变化。

要解决此问题,您可以在 TextView 中使用以下属性 android:maxLines="1"。这将阻止 TextView 跳转到下一行,但会裁剪文本。

或者,您可以使用静态高度来代替match_parentwrap_content,即使用一个值。我强烈推荐使用48dp,因为这是Material Design Guidelines 推荐的。 来源:

How to set a TextView to display text in one line in Android

【讨论】:

【参考方案3】:

您可以添加到您的 TextView:

android:ellipsize="start" android:maxLines="1

从 API 26 开始,您可以使用 Autosizing TextView - 在此处查看文档:https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview

【讨论】:

【参考方案4】:

你可以给你的文本视图一个静态高度,这样它对所有人都是一样的。但是您可能会在其中丢失文本。

【讨论】:

我知道。这就是为什么我需要一种自动调整方式而不是固定高度的原因。

以上是关于Recyclerview 项目没有以相同的高度显示的主要内容,如果未能解决你的问题,请参考以下文章

如何将回收器高度设置为 recyclerView 中的最高项目?

如何在屏幕上设置两个相同大小的RecyclerView,保持高度换行内容以避免空白

RecyclerView 项目高度和重力不起作用

recyclerview 上没有显示任何项目

Vertical RecyclerView 中的 Horizo​​ntal RecyclerViews 丢失位置/状态

Recyclerview中Item的ImageView高度wrapcontent使用Glide加载需要注意的地方