android自定义View组合控件

android自定义View组合控件,第1张

需要看你实现什么效果。一般自定义控件可以用2种方式:

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()方法了。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11978861.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存