You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 4.4中RecyclerView滚动时部分TextViewsetText后文本不显示

解决Android 4.4(KitKat)上RecyclerView Item中TextView文本不显示的问题

我之前也遇到过几乎一模一样的问题——在高版本Android上正常运行的RecyclerView列表,到了KitKat设备上滚动后,部分TextView明明调用了setText却显示为空,onBindViewHolder执行正常,其他视图属性也没问题。结合你的代码和旧系统的兼容性特点,给你几个针对性的解决方案:

1. 给TextView设置明确的LayoutParams

你当前在addView时没有指定布局参数,KitKat的LinearLayout对未指定LayoutParams的子View处理逻辑和高版本有差异,可能导致TextView的可用空间被计算为0,文本自然看不见。修改你的初始化代码,给每个TextView添加合适的LinearLayout.LayoutParams:

init {
    isFocusable = true
    isClickable = true
    isFocusableInTouchMode = true
    background = ContextCompat.getDrawable(context, R.drawable.row_background)
    textViews.forEach {
        // 根据你的布局需求设置参数,这里示例是平分宽度、高度自适应
        val layoutParams = LinearLayout.LayoutParams(
            0,
            LinearLayout.LayoutParams.WRAP_CONTENT,
            1f
        )
        addView(it, layoutParams)
        it.maxLines = 1
        it.gravity = Gravity.CENTER
        // 加上ellipsize,避免文本过长导致KitKat下绘制异常
        it.ellipsize = TextUtils.TruncateAt.END
    }
}

2. 调整属性设置的时机

KitKat的视图系统对动态添加的View,属性设置的时机比较敏感。尝试把TextView的属性设置(maxLines、gravity等)放在addView之前,确保视图被添加到父容器时已经带上了正确的属性:

textViews.forEach {
    it.maxLines = 1
    it.gravity = Gravity.CENTER
    it.ellipsize = TextUtils.TruncateAt.END
    val layoutParams = LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 1f)
    addView(it, layoutParams)
}

3. 在onBindViewHolder中触发重新布局

invalidate()只是触发视图重绘,但如果是布局测量的问题,重绘也没用。试试在设置文本后调用requestLayout(),强制TextView重新计算自身尺寸:

override fun onBindViewHolder(holder: YourViewHolder, position: Int) {
    // 绑定数据逻辑
    val itemData = dataList[position]
    holder.targetTextView.text = itemData.textContent
    // 强制触发布局计算
    holder.targetTextView.requestLayout()
}

4. 禁用RecyclerView的ItemAnimator

KitKat上默认的RecyclerView ItemAnimator存在一些兼容性bug,可能干扰视图的正常更新。可以尝试禁用它:

yourRecyclerView.itemAnimator = null

这些方案都是针对KitKat系统视图布局和RecyclerView复用机制的常见问题,你可以逐个尝试,大概率能解决你的问题。

内容的提问来源于stack exchange,提问作者tommy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:31:54