我们知道获取宽高一般写法是:

         view.measure(0, 0);
view.getMeasuredHeight();

拿宽高前什么时候可以直接用measure(0, 0);而什么时候不能用measure(0, 0);

1.直接用measure(0, 0);

textview控件已经存在于布局文件里,例如:

     <TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />

则可以直接使用measure(0, 0); 因为我们不需要去判断它的宽高模式,让系统底层自己根据布局文件判断。而什么时候不能用measure(0, 0);呢?请看第2点:

2.不能用measure(0, 0);

当textview控件不存在于布局文件里,也就是textview是我们用代码生生地new出来的时候,只能先确定widthMeasureSpec和heightMeasureSpec,再调用measure(widthMeasureSpec, heightMeasureSpec),而widthMeasureSpec和heightMeasureSpec可以用MeasureSpec.makeMeasureSpec(size, mode);来生成。

例如我要一个textview,让它宽度确定(match_parent),高度不确定(wrap_content),java代码可以这么写:

         TextView view = new TextView(UIUtils.getContext());
view.setText(getData().des);// 设置文字
view.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);// 设置文字大小 int widthMeasureSpec = MeasureSpec.makeMeasureSpec(width,
MeasureSpec.EXACTLY);// 宽不变, 确定值, match_parent
int heightMeasureSpec = MeasureSpec.makeMeasureSpec(2000,
MeasureSpec.AT_MOST);// 高度包裹内容, wrap_content;当包裹内容时,
// 参1表示尺寸最大值,暂写2000, 也可以是屏幕高度 // 开始测量
view.measure(widthMeasureSpec, heightMeasureSpec);

【项目笔记】拿宽高前measure(widthMeasureSpec, heightMeasureSpec)的使用技巧的更多相关文章

  1. 等宽高的ImageButton

    @SuppressLint("AppCompatCustomView") public class SquareImageButton extends ImageButton { ...

  2. 在渲染前获取 View 的宽高

    在渲染前获取 View 的宽高 这是一个比较有意义的问题,或者说有难度的问题,问题的背景为:有时候我们需要在view渲染前去获取其宽高,典型的情形是,我们想在onCreate.onStart.onRe ...

  3. Activity正确获取View宽高

    在View的measure完成后,一般可以通过getMeasureWidth/getMeasureWidth方法可以正确的获取View的宽高,而在特殊情况下,可能需要多次measure才能确定最终的测 ...

  4. 【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件

    博客地址 : http://blog.csdn.net/shulianghan/article/details/41520569 代码下载 : -- GitHub : https://github.c ...

  5. OpenGL ES学习笔记(二)——平滑着色、自适应宽高及三维图像生成

    首先申明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. <Android学习笔记--O ...

  6. Android笔记之获取显示器宽高

    原先的Display.getWidth().Display.getHeight()已废弃 推荐的获取Display宽高的方法如下 DisplayMetrics metrics = new Displa ...

  7. Android中ListView嵌套GridView的简单消息流UI(解决宽高问题)

    最近搞一个项目,需要用到类似于新浪微博的消息流,即每一项有文字.有九宫格图片,因此这就涉及到ListView或者ScrollView嵌套GridView的问题.其中GridView的高度问题在网上都很 ...

  8. Drupal 7 建站学习手记(四):怎样改动Nivo Slider模块的宽高

    背景 Nivo Slider模块默认大小是用的height: 100%, width 100%, 但IE7及下面的浏览器是不支持百分比宽高的, 而我的项目目标用户基本都是使用XP系统,项目需求是必须兼 ...

  9. 翻屏类 h5 适配方案:解决宽高自适应难题

    表格 图片等 宽度自适应  :width:100%;  box-sizing: border-box; 基于淘宝适配方案flexible + 翻屏h5 适配方案adaptive flexible解读及 ...

随机推荐

  1. Crowd安装和破解

    参考资料来自:http://www.it165.net/os/html/201311/6653.html 这个破解比较简单

  2. Core Animation中的组动画

    实际开发中一个物体的运动往往是复合运动,单一属性的运动情况比较少,但恰恰属性动画每次进行动画设置时一次只能设置一个属性进行动画控制(不管是 基础动画还是关键帧动画都是如此),这样一来要做一个复合运动的 ...

  3. cocoaPods的安装方法

    1.打开终端 2.先升级Gem sudo gem update --system 3.切换cocoapods的数据源 [先删除,再添加,查看] gem sources --remove https:/ ...

  4. HDU 3499 Flight spfa+dp

    Flight Time Limit : 20000/10000ms (Java/Other)   Memory Limit : 65535/65535K (Java/Other) Total Subm ...

  5. tableview cell添加3D动画

    当cell显示之前,会先调用该方法,因此给cell添加动画,在这个方法里面即可. -(void)tableView:(UITableView *)tableView willDisplayCell:( ...

  6. bash color

    紫色:300A24 黄色:C4A000 Tango 紫色: 200213

  7. Number-guessing Game

    Number-guessing Game Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Othe ...

  8. 第3章 Java语言基础----声明常量

    在程序运行过程中一直不会改变的量称为常量(constant),通常也被称为“final变量”: 声明常量的语句:final 数据类型 常量名[=值] 备注:1)常量名通常使用大写字母,但并不是必须的; ...

  9. IOS 播放视频 MPMoviePlayerController

    在unity游戏的开头播放视频 , 根据需求 , 最后决定用 MPMoviePlayerController 来实现播放, 实现如下: by Tin 需要在AppController.mm的 Open ...

  10. find the majority element

    Runtime: O(n) — Moore voting algorithm: We maintain a current candidate and a counter initialized to ...