您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
wrap_content(wrapcontent是什么意思)
自定义,布局,大小wrap_content(wrapcontent是什么意思)
发布时间:2020-12-06加入收藏来源:互联网点击:
最近很多小伙伴想了解wrap_content的一些资讯,今天小编整理了与wrap_content相关的信息分享给大家,一起来看看吧。
本文目录一览:
1、wrapcontent是什么意思 2、Android 自定义View:为什么你设置的wrap_content不起作用? 3、自定义View:为什么wrap_content属不起作用wrapcontent是什么意思
wrap content
包装内容
wrap
[英][ræp][美][ræp]
vt.包; 缠绕; 用…包裹(或包扎、覆盖等); 掩护;
n.膝毯,披肩,围巾,围脖,头巾,罩衫,外套,大衣; 包装纸; 〈俚〉机密;
vi.缠绕,盘绕(通常与 over, around 等连用); 包上,裹上; 穿上(衣服等);
第三人称单数:wraps过去分词:wrapped复数:wraps现在进行时:wrapping过去式:wrapped
以上结果来自金山词霸
例句:
1.
Please wrap tis for me.
请帮我把这个包起来。
Android 自定义View:为什么你设置的wrap_content不起作用?
在使用自定义View时,View宽 / 高的 wrap_content 属不起自身应有的作用,而且是起到与 matc_parent 相同作用。
其实这里有两个问题:
请分析 解决问题之前,请先看自定义View原理中 (2)自定义View Measure过程 - 最易懂的自定义View原理系列
问题出现在View的宽 / 高设置,那我们直接来看自定义View绘制中第一步对View宽 / 高设置的过程:measure过程中的 onMeasure() 方法
继续往下看 getDefaultSize()
从上面发现:
那么有人会问:wrap_content和matc_parent具有相同的效果,为什么是填充父容器的效果呢?
我们知道,子View的MeasureSpec值是根据子View的布局参数(LayoutParams)和父容器的MeasureSpec值计算得来,具体计算逻辑封装在getCildMeasureSpec()里。
接下来,我们看生成子View MeasureSpec的方法: getCildMeasureSpec() 的源码分析:
getCildMeasureSpec()
从上面可以看出,当子View的布局参数使用 matc_parent 或 wrap_content 时:
所以: wrap_content 起到了和 matc_parent 相同的作用:等于父容器当前剩余空间大小
当自定义View的布局参数设置成wrap_content时时,指定一个默认大小(宽 / 高)。
这样,当你的自定义View的宽 / 高设置成wrap_content属时就会生效了。
网上流传着这么一个解决方案:
答: 是,当父View为 AT_MOST 、View为 matc_parent 时,该View的 matc_parent 的效果就等于 wrap_content 。上述方法存在逻辑错误,但由于这种情况非常特殊的,所以导致最终的结果没有错误。具体分析请看下面例子:
从上面的效果可以看出,View大小 = 默认值
我再将子View的属改为 wrap_content :
从上面的效果可以看出,View大小还是等于默认值。
相信看到这里你已经看懂了:
为了更好的表示判断逻辑,我建议你们用本文提供的解决方案,即根据布局参数判断默认值的设置
不定期分享关于 安卓开发 的干货,追求 短、平、快 ,但 却不缺深度 。
自定义View:为什么wrap_content属不起作用
在使用自定义View时,View宽/高的wrap_content属不起自身应用的作用,而且是起到了与matc_parent相同作用?
问题出现在View的宽/高 设置,那我们直接来看自定义View绘制中第一步对View宽/高设置的过程:measure过程中的onMeasure()方法:
继续往下看getDefaultSize(),其作用是根据父View提供的宽/高测量规格计算View自身的宽/高值。源码分析如下:
1.getDefaultSize()的默认实现中,当View的测量模式是AT_MOST或EXACTLY时,View的大小都会被设置成父View的specSize。
2.因为AT_MOST对应wrap_content,EXACTLY对应matc_parent,所以默认情况下,wrap_content和matc_parent是具有相同的效果。
这里就解决了wrap_content起到了与matc_parent相同的作用。
那么有人会问,View的MeasureSpec是怎么赋值的?
我们知道,View的MeasureSpec的值是根据View的布局参数(LayoutParams)和父容器的MeasureSpec值计算得来的,具体计算逻辑封装在getCildMeasureSpec()里。
我们来分析下getCildMeasureSpec的源码:
从上面可以看出,当子view的布局参数使用matc_parent或wrap_content时,子view的specSize总是等于父容器当前剩余空间大小
当自定义View的布局参数设置成wrap_content时,指定一个默认大小(宽/高)。具体是在复写onMeasure()里进行设置。
这样,当你的自定义View的宽/高设置成wrap_content属时就会生效了。
以上就是wrap_content的相关信息介绍,希望能对大家有所帮助。
本文到此结束,希望对大家有所帮助呢。
上一篇:rf网盘(如何用RF网盘下载)
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |