我正在学习自定义视图,并希望了解invalidate()和requestLayout().
请参考这个答案及其图表:
invalidate() 告诉Android视图的状态已经改变,需要重新绘制.
requestLayout() 表示视图的大小可能已更改,需要重新测量,然后重新绘制.
invalidate()将调用dispatchDraw(),draw()并onDraw()因此重新呈现视图.
requestLayout() 另一方面,从测量再到再次渲染,几乎可以做任何事情.
为什么那么多的例子(甚至是TextView源代码)都会调用invalidate(),然后requestLayout()就在下一行呢?
ListView.invalidate() 和 ListView.invalidateViews() 有什么区别?
对我来说,单独 invalidate() 是行不通的。而 invalidateViews() 的工作方式正是我想要的,即重绘列表项。
android android-listview android-fragments android-view-invalidate