android - 在 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 项目高度工作正常,在加载一些其他页面并返回主页面后,项目的高度正在改变。但是日志显示高度是计算出来的,这是正确的。
如果有人遇到同样的问题并解决了,在这里需要你的帮助。
解决方案
推荐阅读
- flutter - 动态构建具有每行自定义小部件计数的列表
- sed - 从模式空间的开头重复搜索 sed
- angular - 使用打字稿创建泛型类以保存键值数组(字典)
- python - pip 抛出错误“utf-8”编解码器无法解码字节 0xec
- reactjs - 异步调度值的 TypeScript 类型
- ruby-on-rails - 如何接收非通用 facebook 个人资料图片?
- javascript - 如何根据文本匹配在区分大小写的情况下过滤和突出显示 JSON 对象的动态嵌套数组中的文本
- python - 从侧边栏小部件 selenium python 中抓取评论
- c# - C# 父子窗体
- c++ - 无法使用 setter 编辑存储在链表节点中的数据