【项目笔记】拿宽高前measure(widthMeasureSpec, heightMeasureSpec)的使用技巧
我们知道获取宽高一般写法是:
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)的使用技巧的更多相关文章
- 等宽高的ImageButton
@SuppressLint("AppCompatCustomView") public class SquareImageButton extends ImageButton { ...
- 在渲染前获取 View 的宽高
在渲染前获取 View 的宽高 这是一个比较有意义的问题,或者说有难度的问题,问题的背景为:有时候我们需要在view渲染前去获取其宽高,典型的情形是,我们想在onCreate.onStart.onRe ...
- Activity正确获取View宽高
在View的measure完成后,一般可以通过getMeasureWidth/getMeasureWidth方法可以正确的获取View的宽高,而在特殊情况下,可能需要多次measure才能确定最终的测 ...
- 【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件
博客地址 : http://blog.csdn.net/shulianghan/article/details/41520569 代码下载 : -- GitHub : https://github.c ...
- OpenGL ES学习笔记(二)——平滑着色、自适应宽高及三维图像生成
首先申明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. <Android学习笔记--O ...
- Android笔记之获取显示器宽高
原先的Display.getWidth().Display.getHeight()已废弃 推荐的获取Display宽高的方法如下 DisplayMetrics metrics = new Displa ...
- Android中ListView嵌套GridView的简单消息流UI(解决宽高问题)
最近搞一个项目,需要用到类似于新浪微博的消息流,即每一项有文字.有九宫格图片,因此这就涉及到ListView或者ScrollView嵌套GridView的问题.其中GridView的高度问题在网上都很 ...
- Drupal 7 建站学习手记(四):怎样改动Nivo Slider模块的宽高
背景 Nivo Slider模块默认大小是用的height: 100%, width 100%, 但IE7及下面的浏览器是不支持百分比宽高的, 而我的项目目标用户基本都是使用XP系统,项目需求是必须兼 ...
- 翻屏类 h5 适配方案:解决宽高自适应难题
表格 图片等 宽度自适应 :width:100%; box-sizing: border-box; 基于淘宝适配方案flexible + 翻屏h5 适配方案adaptive flexible解读及 ...
随机推荐
- android 录制视频方式
http://www.cnblogs.com/skyseraph/archive/2012/03/31/2427593.html http://bbs.csdn.net/topics/39088448 ...
- php 图像处理类
<?php/** file: image.class.php 类名为Image 图像处理类,可以完成对各种类型的图像进行缩放.加图片水印和剪裁的操作. http://www.lai18.com ...
- CSS BFC(Block Formatting Context)
BFC是 W3C CSS 2.1 规范中的一个概念Block Formatting Context的缩写即格式化上下文,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用.简单讲,它是提 ...
- Kmeans聚类算法
K-means也是聚类算法中最简单的一种了,但是里面包含的思想却是不一般.最早我使用并实现这个算法是在学习韩爷爷那本数据挖掘的书中,那本书比较注重应用.看了Andrew Ng的这个讲义后才有些明白K- ...
- js中call方法的使用介绍
js call call 方法 请参阅 应用于:Function 对象 要求 版本 5.5 调用一个对象的一个方法,以另一个对象替换当前对象. call([thisObj[,arg1[, arg2[, ...
- 使用Common.Logging与log4net的组件版本兼容问题
引用: http://www.cnblogs.com/shijun/p/3713830.html 近期使用了Common.Logging的ILog接口做日志接口,同时利用其log4net适配器与lo ...
- runat="server" 是什么意思?
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs& ...
- iOS长按选择
确实,其实就是一个长按手势 + 图片二维码识别,原生SDK从8.0开始支持 /** * 从照片中直接识别二维码 * @param qrCodeImage 带二维码的图片 * @param myQ ...
- 【重大bug】viewpager使用的时候加载数据应该在setOnPageChangeListener里加载
[重大bug]viewpager使用的时候加载数据应该在setOnPageChangeListener里的onPageSelected里加载,我说怎么首页有数据,第二页就是空白,就是加载了但是数据不显 ...
- PHP上传文件详解
1.上传文件使用的提交方式和请求Content-type POST提交方式,原始的form表单提交请加上enctype="multipart/form-data" 2.MAX_FI ...