LayoutParams
2016-11-21 00:18:59 0 举报
AI智能生成
LayoutParams是Android中用于控制组件(如View、Dialog等)布局属性的一种类。它包含了组件在其父容器中的布局参数,如宽度、高度、边距、对齐方式等。通过设置LayoutParams,可以实现组件的精确定位和灵活布局。例如,可以使用LayoutParams设置一个按钮位于屏幕中央,或者设置一个TextView在其父容器中居中显示。此外,LayoutParams还可以用于实现一些特殊的布局效果,如层叠布局、网格布局等。总之,LayoutParams是Android开发中非常重要的一个概念,掌握它可以帮助我们更好地设计和实现用户界面。
作者其他创作
大纲/内容
我们在自定义控件中设置的Measure(0,0)指定的mode为没有指定
在Activity中onCreate-->onResume-->onMeasure-->onDraw执行顺序
我们的ViewGroup的onMeasuere方法的WidthSpec和HeightSpec参数是从父控件控件得到的,使用measure(0,0)相对于我们不指定模式,让系统自己测量,是多少就是多少,所以我们可以获取宽高
结构:size + mode
public static int makeMeasureSpec(int size, int mode) {
if (sUseBrokenMakeMeasureSpec) {
return size + mode;
} else {
return (size & ~MODE_MASK) | (mode & MODE_MASK);
}
}
private static final int MODE_SHIFT = 30;
private static final int MODE_MASK = 0x3 << MODE_SHIFT;
其实就是用一个int类型的值=32位的二进制数表示=前两位表示MODE + 后30位表示SIZE
MODE的三种模式
UNSPECIFIED--对应00
父容器不限定大小,子View想多大就多大,无限制,这种情况不多,一般是父控件是AdapterView,通过measure方法传入的模式
EXACTILY--对应01
限制尺寸,当将控件的layout_width设置为具体数值时,或者MATCH_PARENT时,都是控件大小已经确定的情况,都是精确的尺寸
AT_MOST--对应10
限制最大尺寸,比如WRAP_CONTENT,控件大小一般随着控件的子控件或内容进行变化,此时控件的尺寸只要不超过父控件允许的最大尺寸即可。size会给出父控件允许的最大尺寸。
getMode方法
public static int getMode(int measureSpec) {
return (measureSpec & MODE_MASK);
}
子主题
获取高2位
getSize方法
public static int getSize(int measureSpec) {
return (measureSpec & ~MODE_MASK);
}
获取低30位
onLayout方法
是用来放置控件的,放置子控件使用layout()方法,四个参数分别是左上右下都是里父控件(0,0)的距离
0 条评论
下一页