004. Android界面刷新没有调用OnMeasure
最近写了一个android上chart和table控件,总结了几点关于自定义控件注意点。
1. onLayout 和 onMeasure必须重载。
2. 如果你无法判断自己的大小,在onMeasure的时候只需要调用super的onMeasure即可,同时还必须调用measureChildren。
?? 2.1 如果没有调用measureChildren,那么在界面刷新的时候就不能保证每个元素的rendering都是可预测的。
3. 重载onLayout不能改变view的hierachy,否则会陷入endless loop。不停的调用onLayout。
4. 响应用户的手势操作,可以通过调用layout方法,改变某个元素的位置。这样的好处是可以避免对整个控件的relayout。
?? 4.1 缺点是我们必须保存元素的位置,否则在下次必须全局layout的时候就丢失了当前元素的位置信息。因为layout方法不会将位置信息保存到layoutparam中。
1 楼 xiaojiaqiao 2011-09-01 能改变view的hierarchy,不过要调用的是addViewInLayout,removeViewInLayout等方法。