本文目录
- android中fill_parent 是什么意思
- Android Studio的LinearLayout的父容器是什么
- Android 自定义View:为什么你设置的wrap_content不起作用
- Android中的wrap_content是什么意思
android中fill_parent 是什么意思
用于android:layout_width 或者android:layout_height ,android:layout_width ="fill_parent"指的是当前视图宽度布满父视图所占宽度。
Android Studio的LinearLayout的父容器是什么
match_parent是Android提供的设置控件宽度的一个值,从字面意思是“跟父类同宽”,简单点理解就是,与包裹这个LinearLayout的控件一样的宽度。不用纠结它的父容器是什么,这边的“父容器”只是一个统称,布局时,这个LinearLayout外层包裹的是什么控件,那么这个控件就是它的父容器。
Android 自定义View:为什么你设置的wrap_content不起作用
在使用自定义View时,View宽 / 高的 wrap_content 属性不起自身应有的作用,而且是起到与 match_parent 相同作用。
其实这里有两个问题:
请分析 & 解决问题之前,请先看自定义View原理中 (2)自定义View Measure过程 - 最易懂的自定义View原理系列
问题出现在View的宽 / 高设置,那我们直接来看自定义View绘制中第一步对View宽 / 高设置的过程:measure过程中的 onMeasure() 方法
继续往下看 getDefaultSize()
从上面发现:
那么有人会问:wrap_content和match_parent具有相同的效果,为什么是填充父容器的效果呢?
我们知道,子View的MeasureSpec值是根据子View的布局参数(LayoutParams)和父容器的MeasureSpec值计算得来,具体计算逻辑封装在getChildMeasureSpec()里。
接下来,我们看生成子View MeasureSpec的方法: 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大小还是等于默认值。
相信看到这里你已经看懂了:
为了更好的表示判断逻辑,我建议你们用本文提供的解决方案,即根据布局参数判断默认值的设置
不定期分享关于 安卓开发 的干货,追求 短、平、快 ,但 却不缺深度 。
Android中的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将完整显示其内部的文本和图像。布局元素将根据内容更改大小。***隐藏网址***