android listview调用getview之后不掉用子view的onmeasure的问题
问题描述:
我的listview里放的自定义view,高度会根据内容发生变化,在onmeasure里设置。
程序在一个android4.4的手机上正常,每次getview之后都会调用子view的onmeasure。
但是在一个6.0.1的手机上,getview之后就不再调用onmeasure了,
导致重用view的时候,大小不对。
该怎么解决啊?
在getview里面自己调measure,在4.4的手机上会重复调用,影响性能的吧。
答
listview复用view是系统自己的操作吧,你是不是布局写死了
答
listview是在setupChild里面调用getview的,里面通过needtomeasure判断是否调measure。
final boolean isSelected = selected && shouldShowSelector();
final boolean updateChildSelected = isSelected != child.isSelected();
final int mode = mTouchMode;
final boolean isPressed = mode > TOUCH_MODE_DOWN && mode < TOUCH_MODE_SCROLL &&
mMotionPosition == position;
final boolean updateChildPressed = isPressed != child.isPressed();
final boolean needToMeasure = !recycled || updateChildSelected || child.isLayoutRequested();
4.4和6.0的系统 isLayoutRequest()的结果不一样