1.
将现有的控件封装起来,作为一个通用的组件来使用,此时只能用代码的形式调用,无法再xml中引用,例如将textview和button封装为一含尘个登录控件。
2.
继承view或者viewgroup,其实viewgroup也是继承的view。然后依次实现onmeasure()、onlayout()、ondraw(),
1.
onmeasure
--
负责测绘控件的大小
2.
onlayout
--
负责控件中子元素摆放的位置裂档
3.
ondraw
--
负责控件和子控件的肆老乱绘制,使其显示在屏幕中
4.
一些设计和实现较好的自定义view,一般还需要考虑事件的传递、动画的控制、touch事件的处理等
通过addView的方式添加控件,最好能逗辩把layoutParams的各个属性熟悉一下,不用xml定义,但同样需要一些必要慎指哗的参数就转宽行由LayoutParams.xxxx进行定义了!~LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)
getWindowManager().addView(myView,lp)
如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控培清升件,而ListView的Item能被选中的基础是它能获取Focus,也就是说我们可以通过将ListView中Item中包含的所有控件的focusable属性设置为false,这样的话ListView的Item自动获得了Focus的权限,也就可以被配老选中了,也就会响应onItemClickListener中的onItemClick()方法,然而将ListView的Item Layout的子控件focusable属性设置为false有点繁琐,我们可以通过对Item Layout的根控件设置其android:descendantFocusability=”正厅blocksDescendants”即可,这样Item Layout就屏蔽了所有子控件获取Focus的权限,不需要针对Item Layout中的每一个控件重新设置focusable属性了,如此就可以顺利的响应onItemClickListener中的onItenClick()方法了。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)