水平回收器视图会截断文本,因为它使所有列表项保持相同的高度

Jim*_*Jim 5 android android-layout android-adapter android-recyclerview

当使用带有 LinearLayoutManager.HORIZONTAL 和高度的回收器视图时,wrap_content它是否试图保持列表项具有相同的高度?\n似乎确实如此,并且一些文本被截断。我该如何解决这个问题?
\n这是该项目的布局

\n\n
<?xml version="1.0" encoding="utf-8"?>\n<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\n    xmlns:tools="http://schemas.android.com/tools"\n    android:background="@drawable/boundaries"\n    android:paddingTop="16dp"\n    android:paddingLeft="16dp"\n    android:paddingRight="16dp"\n    android:layout_marginEnd="16dp"\n    android:layout_width="wrap_content"\n    android:layout_height="wrap_content">\n\n    <LinearLayout\n        android:layout_width="16dp"\n        android:layout_height="16dp"\n        android:orientation="vertical"\n        android:gravity="center"\n        >\n\n        <ImageView\n            android:layout_width="16dp"\n            android:layout_height="16dp"\n            android:layout_gravity="center"\n            android:scaleType="fitCenter"\n            android:gravity="center"\n            android:src="@drawable/my_icon\xe2\x80\x9d\n            />\n\n\n    </LinearLayout>\n\n    <LinearLayout\n        android:layout_width="match_parent"\n        android:layout_height="wrap_content"\n        android:orientation="vertical">\n\n        <TextView\n            android:layout_width="wrap_content"\n            android:layout_height="wrap_content"\n            android:ellipsize="end"\n            android:layout_marginStart="12dp"\n            android:layout_marginEnd="16dp"\n            android:layout_marginBottom="16dp"\n            android:maxWidth="200sp"\n            android:text="Some text of various length"\n            />\n\n        <TextView\n            android:layout_width="wrap_content"\n            android:layout_height="0dp"\n            android:layout_weight="1"\n            android:includeFontPadding="false"\n            android:layout_marginStart="12dp"\n            android:layout_marginBottom="16dp"\n            android:gravity="bottom"\n            android:text="Some text that is not more than a line"\n            />\n    </LinearLayout>\n\n</LinearLayout>\n
Run Code Online (Sandbox Code Playgroud)\n

Doc*_*ger 2

RecyclerView默认情况下保持相同的高度。它使用可见项目视图布局的最大高度作为渲染时的高度。因此,这会导致文本截断问题,因为可能有一个项目的内容比可见项目的内容大。

在我看来,没有必要像这个人那样创建自定义布局管理器。为了性能和可用性,我认为最好猜测项目视图的最大高度并将其设置为 RecyclerView 高度作为常数,如 dp 大小。

如果你确实想设置正确的高度,你需要编写一些java代码来估计项目视图的实际高度。RecyclerView 应该有自己的高度,这是在渲染时确定的。而且内容是动态的。因此,您需要编写一些代码来估计所有项目视图,并找到最大高度以在 java 代码中设置为 RecyclerView 的高度。