首页 > 解决方案 > 在 android 中首次初始化后,回收器 item_view 的高度正在改变

问题描述

在 recycler_view 适配器类中,添加了以下代码以动态更改 item_view 的高度

   override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TaskListViewHolder {
    val itemView = LayoutInflater.from(parent.context).inflate(R.layout.task_item_new, parent, false)

    val vto = parentLayer!!.getViewTreeObserver()
    vto.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
        override fun onGlobalLayout() {
            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
                parentLayer!!.getViewTreeObserver().removeGlobalOnLayoutListener(this)
            } else {
                parentLayer!!.getViewTreeObserver().removeOnGlobalLayoutListener(this)
            }
           var quicktaskLayerwidth = parentLayer!!.getMeasuredWidth()
           var quicktaskLayerheight = parentLayer!!.getMeasuredHeight()

            Log.e("Parent_Ht", "" + quicktaskLayerheight/4)
            itemView.getLayoutParams().height = quicktaskLayerheight / 4

        }
    })


    return TaskListViewHolder(itemView)
}

在活动类中有一个GridLayoutManager管理器用于在 recycler_view 中显示8个图标。

并且有一个父线性布局,其高度ViewTreeObserver中测量

IMP:第一次 recycler_view 项目高度工作正常,在加载一些其他页面并返回主页面后,项目的高度正在改变。但是日志显示高度是计算出来的,这是正确的。

如果有人遇到同样的问题并解决了,在这里需要你的帮助。

标签: androidkotlinandroid-recyclerviewandroid-viewtreeobserver

解决方案


推荐阅读