自定义Listview中init时,通过setLayoutParam(),设定LayoutParam不起作用:
经过分析,得出是由于设定时,listview并未真正准备完毕。
通过代码主线程的先后顺序,无准确把握Listview准备完成的时间,故很难精准实现所需要的目标。
需要通过View.getViewTreeObserver()获取到ViewTreeObserver,并通过ViewTreeObserver.addOnGlobalLayoutListener(OnGlobalLayoutListener)注册callback,实现监听当前view的完成情况。
通过ViewTreeObserver.addOnGlobalLayoutListener(OnGlobalLayoutListener)注册的callback,实现view的监测,来实现需要的操作。
具体实现如下:
关于View加载的时机造成的问题,均可以通过此方法来实现,完成所需设计。如获取view的size,view加载完成后的逻辑控制等等。