Jim*_*Jim 5 android android-layout android-adapter android-recyclerview
当使用带有 LinearLayoutManager.HORIZONTAL 和高度的回收器视图时,wrap_content它是否试图保持列表项具有相同的高度?\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>\nRun Code Online (Sandbox Code Playgroud)\n
RecyclerView默认情况下保持相同的高度。它使用可见项目视图布局的最大高度作为渲染时的高度。因此,这会导致文本截断问题,因为可能有一个项目的内容比可见项目的内容大。
在我看来,没有必要像这个人那样创建自定义布局管理器。为了性能和可用性,我认为最好猜测项目视图的最大高度并将其设置为 RecyclerView 高度作为常数,如 dp 大小。
如果你确实想设置正确的高度,你需要编写一些java代码来估计项目视图的实际高度。RecyclerView 应该有自己的高度,这是在渲染时确定的。而且内容是动态的。因此,您需要编写一些代码来估计所有项目视图,并找到最大高度以在 java 代码中设置为 RecyclerView 的高度。
| 归档时间: |
|
| 查看次数: |
3368 次 |
| 最近记录: |