关于自定义view中使用的getWidth()和geHeight()方法小结
来源:互联网 发布:恒生指数看盘软件 编辑:程序博客网 时间:2024/06/05 20:44
1.不需要设置wrap_content属性,对应布局中给特定高度或者match_parent,就不需要自己重写onMeasure方法(该方法中默认提供),getheight()和getwidth()得到的就是所属的自定义iew的宽度和高度,如下所示:
1.1
/** * 注意:在自定义view中的如果不需要设置wrap_content属性就不需要自己重写onMeasure方法 * 因为在onMeasure方法中系统默认会自动测量两种模式:一个是match_parent另一个则是自己指定明确尺寸大小 * 这两种方法对应着这一种MeasureSpec.AT_MOST测量模式,由于我们设置这个自定义浮动的字母索引表宽度是指定明确大小 * 高度是match_parent模式,所以这里就不要手动测量了直接通过getHeight和getWidth直接拿到系统自动测量好高度和宽度 * */int height = getHeight();int width = getWidth();
1.2对应布局中的写法(标红部分),
<com.example.administrator.customcontacts.LetterListView android:id="@+id/id_letterview" android:layout_width="30dp" android:layout_height="match_parent" android:layout_alignParentRight="true" />
2. 布局文件中高度和宽度是wrap_content情况下,需要重写onMeasure()方法,获取自己想要的高度和宽度,关键代码如下:
2.12.2 对应布局中的写法(标红部分)//View默认最小宽度private static final int DEFAULT_MIN_WIDTH = 300;
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(measure(widthMeasureSpec),measure(heightMeasureSpec));
}
注:此时在需要的地方调用getHeight()和getWidth()方法得到的值:是在measure()方法中,默认大小private int measure(int origin) {
int result = DEFAULT_MIN_WIDTH;
int specMode = MeasureSpec.getMode(origin);
int specSize = MeasureSpec.getSize(origin);
if (specMode == MeasureSpec.EXACTLY) {
result = specSize;
} else {
if (specMode == MeasureSpec.AT_MOST) {
result = Math.min(result, specSize);
}
}
return result;
}
DEFAULT_MIN_WIDTH分别和MeasureSpec.EXACTLY,MeasureSpec.AT_MOST两种模式经过对比后所到的
<com.example.administrator.customrecordview.RecordView android:id="@+id/recordView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" />
0 0
- 关于自定义view中使用的getWidth()和geHeight()方法小结
- android自定义View中getWidth和getHeight返回0
- Android View中getWidth方法
- 使用View的getWidth(),getHeight()方法返回0的问题
- 使用View.getWidth()方法出现的问题及解决方法
- Android中View窗体getWidth和getMeasuredWidth的区别
- Android自定义控件中getWidth()和getMeasureWidth()的区别
- Android自定义控件中getWidth()和getMeasureWidth()的区别
- android 自定义view 里onMeasure方法里使用getWidth()=0
- 自定义view2--getMeasuredWidth和getWidth方法区分
- android中getMeasureWidth()和getWidth()方法的区别
- 关于自定义View中onMesure和onDraw方法
- 关于View.getHeight和getWidth为0的解决方案(待深入学习)
- Andriod自定义View三:getWidth()与getMeasuredWidth()的区别
- Android View中onSave(),onRestore(),getWidth(),getMeasureWidth()方法解析
- Android 关于view的getLayoutParams().width,getWidth(),getMeasuredWidth();
- View的getWidth()和getMeasuredWidth()有什么区别吗?如何在onCreate中拿到View的宽度和高度?
- view getwidth() 和getMeasuredWidth()区别
- 网页中邮箱点击直接进入发送邮件页面的样式
- 使文本框不可编辑[不太常用的方法]
- 计蒜客
- 和菜鸟一起学linux内核源码之基础准备篇
- MyEclipse部署项目到Tomcat上,但是classes文件夹下没有编译项目
- 关于自定义view中使用的getWidth()和geHeight()方法小结
- 字符数组的输入方式
- 怎么实现PHP的三种HTTP请求模拟post 提交 之二
- jquery ajax 总是报error
- Android环境变量配置
- Android 数据库greenDAO基础
- error LNK2019 : 无法解析的外部符号 __imp____glutInitWithExit@12... ...
- Android中的Menu
- Spring Web Flow2开始状态