Android measure 简单理解
来源:互联网 发布:淘宝里的天猫店 编辑:程序博客网 时间:2024/06/07 06:08
一、如何设置视图的大小?
1. 如何设置视图大小:layout_width与layout_heigh
2. layout_width与layout_heigh的值
1) 填满:fill_parent、math_content
2) 包裹:wrap_content
3) 具体值:99dip
3) 具体值:99dip
3. 如果不指定Width与Height会出现以下异常
java.lang.RuntimeException: Binary XML file line #46: You must supply a layout_width attribute.
java.lang.RuntimeException: Binary XML file line #46: You must supply a layout_width attribute.
二、布局参数最终加载为代码
1. XML 或者代码设置layout_width和layout_height属性,XML通过inflate转换成代码。
width 与 height 映射到 LayoutParams?
public LayoutParams(Context c, AttributeSet attrs) {
TypedArray a = c.obtainStyledAttributes(attrs, R.styleable.ViewGroup_Layout);
setBaseAttributes(a,
R.styleable.ViewGroup_Layout_layout_width,
R.styleable.ViewGroup_Layout_layout_height);
a.recycle();
}
如果是代码直接View.setLayoutParams(new LayoutParams(x, y));
2. 了解ViewGroup.LayoutParams 派生类,可以知道(Android 布局控件设计师)都提供了哪些参数
有两种添加LayoutParams的方法: Java Code、layout XML
三、简单理解
视图的大小由谁来决定?
由父视图、子视图、界面开发人员共同决定。
由父视图、子视图、界面开发人员共同决定。
为什么布局需要父视图与子视图共同决定? 为什么不直接设置宽和高?
先来看看如果界面开发人员直接可以指定宽高效果如何。例如:Html就是可以指定宽高的,界面开发人员是具有整个页面的控制权,这样在有些情况下会造成一个过大把另外一个挤出去。
再来看看Android是如何做的?
Android是拆分开的,这样做保证了最末端的(界面开发)影响其他层级的布局,需要按照(控件开发)的规则来。
需要通过measureChilde(view, width, height), 或者childView.measure();
先来看看如果界面开发人员直接可以指定宽高效果如何。例如:Html就是可以指定宽高的,界面开发人员是具有整个页面的控制权,这样在有些情况下会造成一个过大把另外一个挤出去。
再来看看Android是如何做的?
Android是拆分开的,这样做保证了最末端的(界面开发)影响其他层级的布局,需要按照(控件开发)的规则来。
需要通过measureChilde(view, width, height), 或者childView.measure();
父视图限制子视图显示区域,子视图控制自身大小。
* 问题1 :
如果视图还未添加到ViewGroup中,还想获取其宽高,需要手动调用View.measure()方法?
可以传入三种模式或者具体值
child.measure(MeasureSpec.EXACTLY | itemWidth, MeasureSpec.UNSPECIFIED);
child.measure(MeasureSpec.EXACTLY | itemWidth, MeasureSpec.UNSPECIFIED);
MeasureSpec.EXACTLY | itemWidth?
* 问题2:
如何在视图已经显示之后,动态修改宽高?
* 问题3:
? measure执行多次?
例子总只写了一个view,在onMeasure中添加log获知此方法执行2次? 在ADT 20.3中同样的代码onMeasure执行4次?不是应该只执行一次吗?
父view要求子view onalyout,但是之后又调整大小,所以子view会再次执行onlayout
* 问题4: 解释完为什么视图大小由父子视图决定后
layout_前缀的含义 - ***layout的意思解释,是这对其父空间,非子控件
layout的意思解释,是这对其父空间,非子控件
为什么设置与记录宽高的对象LayoutParams是在ViewGroup中定义的,难道View就不需要设置宽高吗?
0 0
- Android measure 简单理解
- Android Measure 体系简单总结
- 理解Android的layout和measure
- 理解Android的layout和measure
- android measure
- Android measure
- android measure
- android measure
- measure机制流程理解
- android View.measure
- Android之measure流程
- Android View measure过程
- android组件measure过程
- android View.measure()初探
- Android View的Measure
- Android View-measure
- 我对measure的理解。
- Android布局中ScrollView与ListView的冲突的最简单方法(listItem.measure(0, 0))
- Swift调用OC之NSArray
- poj1269 直线求交点
- 自制OS 第7步
- 欢迎使用CSDN-markdown编辑器
- 23种设计模式(15):迭代器模式
- Android measure 简单理解
- iOS开发之KVC、KVO
- V8引擎之Binding
- LeetCode--Next Permutation
- myplan
- 【张孝祥并发课程笔记】14:java5阻塞队列的应用
- 搜索推广营销五步曲之三:方案制作之如何写好创意
- 项目总结之优化游戏包大小
- 动态路由距离矢量路由协议RIP