自定义控件 继承View 使用OnMeasure定义控件宽高
2015-12-21 12:30
323 查看
[code]protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { setMeasuredDimension(measureWH(widthMeasureSpec, 0), measureWH(heightMeasureSpec, 1)); }
[code]setMeasuredDimension(width,height),该方法进行控件宽高设,
我们自定一个方法,measureWH(),该方法用于判断,根据布局文件中给该控件设定的参数,返回相应的宽高值。
[code]/** * 测量宽高 * type=0 测量宽度, type=1 测量高度 */ private int measureWH(int measureSpec, int type){ int model = MeasureSpec.getMode(measureSpec);//获得当前空间值的一个模式 int size = MeasureSpec.getSize(measureSpec);//获得当前空间值的推荐值 switch (model){ case MeasureSpec.EXACTLY://当你的控件设置了一个精确的值或者为match_parent时, 为这种模式 Log.d("xxx","EXACTLY"); //size = (int) paint.measureText(labels[0]); return size; case MeasureSpec.AT_MOST://当你的控件设置为wrap_content时,为这种模式 if(type == 0){ Log.d("xxx","AT_MOST"); //测量宽度 size = (int) paint.measureText(labels[0]); return size; } else { //测量高度 return size; } case MeasureSpec.UNSPECIFIED://尽可能的多 break; } return 0; }
相关文章推荐
- 格式乱了,暂时搬到csdn,有时间再来整整吧。。。
- hdu1274 展开字符串(DFS)
- 为NGUI panel 添加 sorting layer
- Excel转为html
- netty5笔记-总体流程分析1-ServerBootstrap启动
- netty5笔记-总体流程分析1-ServerBootstrap启动
- spark streaming job数据输出数目不准确问题排查记录
- 如何制作中文文字云
- 你在使用assetbundle时可能遇到的坑
- 2015年广东工业大学编译原理课设
- Jenkins进阶系列之——10Publish Over SSH插件
- CompressUtils相关代码,java中文件压缩或解压已经文件的基本操作等方法
- Unity3D Lightmap贴图加载替换
- vs2013下debug模式下不能执行断点解决方法
- 冒泡排序
- Jenkins进阶系列之——09配置Linux系统ssh免密码登陆
- 手游开发中所有特殊的文件夹
- 四种会话跟踪技术
- Leetcode 2 - Add Two Numbers
- Jenkins进阶系列之——08Jenkins纳入版本控制