wrap_content(wrap_content没有高度的原因)
如果有更好的建议或者想看更多关于招生教育技术大全及相关资讯,可以多多关注茶馆百科网。

#本文目录一览
1、listview设置宽度为wrap_content,为什么它还是占满全屏。2、fill_parent、wrap_content和match_parent的区别3、Android自定义View:为什么你设置的wrap_content不起作用?4、wrapcontent是什么意思5、自定义View:为什么wrap_content属性不起作用6、Android中的wrap_content是什么意思wrap_content的意思是根据里面的内容宽度来决定宽度。
wrap_content并不意味着不会占满全屏,如果里面有元素占满了全屏,则listview的宽度就会自动全屏。
一般来说listview都会设置成宽度占满全屏。
1.fill_parent/match_parent:这两个其实是一个意思,就是填满整个屏幕.我们可以这样理解,一个电脑的背景图片设置为拉伸,不管这个电脑屏幕多大,这个图片多小,这图片都要拉大拉大,然后覆盖整个屏幕。
wrap_content:内容决定大小,这样想嘛,我们有一个弹簧套子,就是wrap_content,塞苹果的时候他就是苹果大小,塞西瓜时候他就是西瓜大小。
在使用自定义View时,View宽/高的wrap_content属性不起自身应有的作用,而且是起到与match_parent相同作用。
其实这里有两个问题:
请分析解决问题之前,请先看自定义View原理中(2)自定义ViewMeasure过程-最易懂的自定义View原理系列
问题出现在View的宽/高设置,那我们直接来看自定义View绘制中之一步对View宽/高设置的过程:measure过程中的onMeasure()***
继续往下看getDefaultSize()
从上面发现:
那么有人会问:wrap_content和match_parent具有相同的效果,为什么是填充父容器的效果呢?
我们知道,子View的MeasureSpec值是根据子View的布局参数(LayoutParams)和父容器的MeasureSpec值计算得来,具体计算逻辑封装在getChildMeasureSpec()里。
接下来,我们看生成子ViewMeasureSpec的***:getChildMeasureSpec()的源码分析:
getChildMeasureSpec()
从上面可以看出,当子View的布局参数使用match_parent或wrap_content时:
所以:wrap_content起到了和match_parent相同的作用:等于父容器当前剩余空间大小
当自定义View的布局参数设置成wrap_content时时,指定一个默认大小(宽/高)。
这样,当你的自定义View的宽/高设置成wrap_content属性时就会生效了。
网上流传着这么一个解决方案:
答:是,当父View为AT_MOST、View为match_parent时,该View的match_parent的效果就等于wrap_content。上述***存在逻辑错误,但由于这种情况非常特殊的,所以导致最终的结果没有错误。具体分析请看下面例子:
从上面的效果可以看出,View大小=默认值
我再将子View的属性改为wrap_content:
从上面的效果可以看出,View大小还是等于默认值。
相信看到这里你已经看懂了:
为了更好的表示判断逻辑,我建议你们用本文提供的解决方案,即根据布局参数判断默认值的设置
不定期分享关于安卓开发的干货,追求短、平、快,但却不缺深度。
wrapcontent
包装内容
wrap
[英][ræp][美][ræp]
vt.包;缠绕;用…包裹(或包扎、覆盖等);掩护;
n.膝毯,披肩,围巾,围脖,头巾,罩衫,外套,大衣;包装纸;〈俚〉机密;
vi.缠绕,盘绕(通常与over,around等连用);包上,裹上;穿上(衣服等);
第三人称单数:wraps过去分词:wrapped复数:wraps现在进行时:wrapping过去式:wrapped
以上结果来自金山词霸
例句:
1.
Pleasewrapthisforme.
请帮我把这个包起来。
在使用自定义View时,View宽/高的wrap_content属性不起自身应用的作用,而且是起到了与match_parent相同作用?
问题出现在View的宽/高设置,那我们直接来看自定义View绘制中之一步对View宽/高设置的过程:measure过程中的onMeasure()***:
继续往下看getDefaultSize(),其作用是根据父View提供的宽/高测量规格计算View自身的宽/高值。源码分析如下:
1.getDefaultSize()的默认实现中,当View的测量模式是AT_MOST或EXACT***时,View的大小都会被设置成父View的specSize。
2.因为AT_MOST对应wrap_content,EXACT***对应match_parent,所以默认情况下,wrap_content和match_parent是具有相同的效果。
这里就解决了wrap_content起到了与match_parent相同的作用。
那么有人会问,View的MeasureSpec是怎么赋值的?
我们知道,View的MeasureSpec的值是根据View的布局参数(LayoutParams)和父容器的MeasureSpec值计算得来的,具体计算逻辑封装在getChildMeasureSpec()里。
我们来分析下getChildMeasureSpec的源码:
从上面可以看出,当子view的布局参数使用match_parent或wrap_content时,子view的specSize总是等于父容器当前剩余空间大小
当自定义View的布局参数设置成wrap_content时,指定一个默认大小(宽/高)。具体是在复写onMeasure()里进行设置。
这样,当你的自定义View的宽/高设置成wrap_content属性时就会生效了。
WRAP_CONTENT、MATCH_PARENT/FILL_PARENT属性的原理说明
①fill_parent
设置一个视图的布局为fill_parent将强制性地使视图扩展至父元素大小。
②match_parent
Android中match_parent和fill_parent意思一样,但match_parent更贴切,于是从2.2开始两个词都可以
用,但2.3版本后建议使用match_parent。
③wrap_content
自适应大小,强制性地使视图扩展以便显示其全部内容。以TextView和ImageView控件为例,设置为
wrap_content将完整显示其内部的文本和图像。布局元素将根据内容更改大小。
出处:
好了,文章到这里就结束啦,如果本次分享的wrap_content和wrap_content没有高度的原因问题对您有所帮助,还望关注下本站哦!
本文主要介绍了关于wrap_content(wrap_content没有高度的原因)的相关养殖或种植技术,招生教育栏目还介绍了该行业生产经营方式及经营管理,关注招生教育发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解招生教育技术怎么管理的要点,是您招生教育致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://23.234.50.4:8411/article/497605.html