In recycler_view adapter class the following code is added for dynamically changing height of 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)
}
In activity class there is a GridLayoutManager manager is used for showing 8 icons in recycler_view.
And there is a parent Linear layout, height of which is measured in ViewTreeObserver
IMP: At first time recycler_view item height works fine, after loading some other pages and returning to main page the height of item is changing. But the log shows height is calculated and which is correct.
If someone faced same issue and resolved, need your help here.