如何根据TextView内容长度调整RecyclerView条目高度

要实现RecyclerView条目内TextView高度自适应文本内容,按以下步骤设置即可:
1. 布局属性调整
- TextView的
layout_height必须设置为wrap_content,不能使用固定dp值或match_parent - 移除TextView的
lines、maxLines固定行数限制,若需要限制最大行数可按需设置,不影响小于最大行数时的自适应效果 - 条目根布局的
layout_height同样要设为wrap_content,不要写固定高度 - 若使用ConstraintLayout作为条目父布局,确保TextView的上下约束配置正确,不要同时约束上下边距强制撑满高度
2. 代码逻辑注意
- 绑定Holder数据时仅调用
setText()赋值即可,不要手动调用setHeight()等方法修改TextView高度 - 条目内容更新后调用
notifyItemChanged(对应位置)触发条目重新测量渲染,若高度仍不生效可在赋值后追加调用TextView的requestLayout()强制重绘
3. 特殊场景适配
- 若使用自定义LayoutManager,需确认你实现的测量逻辑支持条目高度wrap_content,官方默认的LinearLayoutManager、GridLayoutManager本身都支持该特性
recyclerView.setHasFixedSize(true)仅优化RecyclerView整体尺寸变化的重绘逻辑,不影响单条目的高度自适应,可正常开启
内容的提问来源于stack exchange,提问作者Hoax
相关产品推荐
相关产品推荐

