业务需求,需要一个类似于横向滚动的gridview,参考了网上的一个哥们写的,可以实现类似的横向gridview的滚动,发现adapterview真是深奥,不过也是封装的很好。自定义view倒不难,中间比较复杂的一块,就是复用可见的item,之前使用listview的时候,遗漏了几个重要的方法,int getItemViewType(int position);和int getViewTypeCount();通过这两个方法,可以很好的解决不同类型的item复用的问题。
在自定义adapterview的时候,学习到了一个新的用法,FocusFinder的用法,用来寻找在当前的view中可见的下一个view,可以根据方向来确定,例如在:listview的源码中就有这样的用法:FocusFinder.getInstance().findNextFocus( (ViewGroup) selectedView, currentFocus, direction);
另外在自定义layout的时候,发现的,由于系统绘制的流程是onMeasure,onLayout,如果一个子view没有在onMeausre的时候用Measurechild方法的话,在使用子view的getMeasureHeight时则会获取到一个0的值。
自定义layout的时候,重点是在onMeasure及onLayout,子view的大小,可以在onMeasure的时候确定,也可以在onLayout的时候确定,这中间的流程自己的理解还是有一点混乱。