首页 中国创投网 > 民生 > 正文

自定义ViewGroup问题解决 世界最新

·为什么测量父要先测量子?

父需要确定给不给得起。

·为什么测量子需要父的测量规格?measureChild(child, widthMeasureSpec, heightMeasureSpec);


【资料图】

父布局分三种:知道多大,很大但不知道多大,还没分配。相应的子控件也分三种:知道要多少(子控件一样大),有多少全给,控件多大就要多少(子控件不一样大)。

·layoutParams是什么?

layoutParams代表xml里设置的宽高,但它不是int,API里有相应方法转化为int。

·getMeasuredWidth和getWidth的区别?

前者在measure()结束后就有,后者是布局结束后才有

·宽和高的测量模式和wrap、match、具体值是什么关系?

width:

Match-exactly-1080

Wrap-at_most-1080

100dp-exactly-300px

height:

Match-unspecified-0

Wrap-unspecified-0

100dp-exactly-300px

·对子控件设置ViewGroup.MarginLayoutParams layoutParams = new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

和xml里对子控件的设置的是什么关系?认哪个?

认java代码。条目样式xml里的最外层设置的大小和间距是没用的,它相当于画布,条目真正的大小、背景最好从第二层开始,大小会被java覆盖,但是间距是直接不认,java不设置那就会默认0 

·总结:大小和间距都只认优先java设的,写java的时候可以照着xml写

·上面可以看到自定义view继承的是ViewGroup,必须至少双参构造,即必须用代码设置并传入子控件的layoutParam。继承LinearLayout可以单参构造,认xml设置的子控件大小,但是不认xml里的间距,所以意义不大。

·注意事项:在自定义布局的代码中,getLayoutParam和child.getLayoutParam分别获取的是父与子的布局参数。

关键词:

关于本站 管理团队 版权申明 网站地图 联系合作 招聘信息

Copyright © 2005-2023 中国创投网 - cn.xunjk.com All rights reserved
联系我们:39 60 29 14 2@qq.com
皖ICP备2022009963号-3