自定义Listview设定LayoutParam不起作用

自定义Listview中init时,通过setLayoutParam(),设定LayoutParam不起作用:

经过分析,得出是由于设定时,listview并未真正准备完毕。

通过代码主线程的先后顺序,无准确把握Listview准备完成的时间,故很难精准实现所需要的目标。

需要通过View.getViewTreeObserver()获取到ViewTreeObserver,并通过ViewTreeObserver.addOnGlobalLayoutListener(OnGlobalLayoutListener)注册callback,实现监听当前view的完成情况。

通过ViewTreeObserver.addOnGlobalLayoutListener(OnGlobalLayoutListener)注册的callback,实现view的监测,来实现需要的操作。

具体实现如下:

关于View加载的时机造成的问题,均可以通过此方法来实现,完成所需设计。如获取view的size,view加载完成后的逻辑控制等等。

你可能感兴趣的:(自定义Listview设定LayoutParam不起作用)