最近写了一个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中。