水平的回收站视图会截断文本,因为所有列表项的高度均保持不变

时间:2018-11-16 14:04:04

标签: android android-layout android-recyclerview android-adapter

在将回收站视图与LinearLayoutManager.HORIZONTAL和高度设置为wrap_content一起使用时,是否要使列表项具有相同的高度? 看起来确实如此,并且某些文本被截断了。我该怎么解决?
这是商品的布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:background="@drawable/boundaries"
    android:paddingTop="16dp"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:layout_marginEnd="16dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <LinearLayout
        android:layout_width="16dp"
        android:layout_height="16dp"
        android:orientation="vertical"
        android:gravity="center"
        >

        <ImageView
            android:layout_width="16dp"
            android:layout_height="16dp"
            android:layout_gravity="center"
            android:scaleType="fitCenter"
            android:gravity="center"
            android:src="@drawable/my_icon”
            />


    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:layout_marginStart="12dp"
            android:layout_marginEnd="16dp"
            android:layout_marginBottom="16dp"
            android:maxWidth="200sp"
            android:text="Some text of various length"
            />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:includeFontPadding="false"
            android:layout_marginStart="12dp"
            android:layout_marginBottom="16dp"
            android:gravity="bottom"
            android:text="Some text that is not more than a line"
            />
    </LinearLayout>

</LinearLayout>

1 个答案:

答案 0 :(得分:0)

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

我认为,创建自定义布局管理器like this guy did并不需要太多。为了提高性能和可用性,我认为最好猜测项目视图的最大高度,并将其设置为RecyclerView height作为dp大小之类的常量。

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