Android获取view高度的三种方式
在Android开发中,获取View的高度是一项常见的需求,特别是在自定义View或者进行布局动态计算时。以下将详细介绍Android获取View高度的三种方式。 1. **使用`getMeasuredHeight()`方法** `getMeasuredHeight()`返回的是View在测量阶段(Measurement)确定的尺寸,它基于父布局的约束和自身的LayoutParams。这个值不受屏幕大小限制,即使View的部分区域超出了屏幕边界,`getMeasuredHeight()`依然能返回View的实际高度。在`onMeasure()`方法中,开发者通常会设置这个值,它代表了View的理想尺寸。 2. **使用`getHeight()`方法** `getHeight()`方法在View已经绘制完成并显示在屏幕上时,返回当前可见的高度。在屏幕能够完全显示View的情况下,`getHeight()`与`getMeasuredHeight()`的值相同。但当View的一部分被裁剪或者隐藏时,`getHeight()`返回的是屏幕可见部分的高度,而`getMeasuredHeight()`仍为View的总高度。 3. **利用`ViewTreeObserver`监听布局变化** 在`onCreate()`或`onResume()`等生命周期方法中直接调用`getWidth()`和`getHeight()`可能无法得到准确的尺寸,因为这时View的布局还没有完成。为了在布局完成后获取准确的尺寸,可以使用`ViewTreeObserver`。 - **注册`OnGlobalLayoutListener`** 可以通过`getViewTreeObserver().addOnGlobalLayoutListener()`添加一个全局布局监听器。当布局完成或任何View的可视状态改变时,`onGlobalLayout()`方法会被调用。在其中可以获取到View的准确高度: ```java View mHeaderView; // ... mHeaderView.getViewTreeObserver().addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { mHeaderViewHeight = mHeaderView.getHeight(); // 防止多次触发,移除监听器 mHeaderView.getViewTreeObserver() .removeGlobalOnLayoutListener(this); } }); ``` 这种方法的优点是可以在任何时刻获取到View的精确尺寸,但需要注意的是,`OnGlobalLayoutListener`可能会因多种原因被多次触发,因此在获取到需要的尺寸后,应该及时移除监听器以避免性能问题。 4. **使用`View.post(Runnable)`** 另一种获取View尺寸的方法是在`View.post(Runnable)`中执行一个Runnable。这种方式会在View的布局完成并可以安全访问尺寸信息时回调Runnable的`run()`方法: ```java TextView tv; // ... tv.post(new Runnable() { @Override public void run() { int height = tv.getHeight(); // 使用高度 } }); ``` 这种方法简单且实用,适用于大部分情况。 总结来说,Android获取View高度主要有三种策略:`getMeasuredHeight()`、`getHeight()`和使用`ViewTreeObserver`监听布局变化。开发者应根据具体场景选择合适的方法,确保在正确的时间获取到准确的View尺寸。在处理复杂的布局或者动画时,理解这些方法的差异和使用时机至关重要。




























- 粉丝: 2
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 会计软件的应用技巧助工作事半功倍.doc
- 热点105元宇宙的由来及其运用(原卷版)-2022年中考英语考前时事热点话题阅读题型专练(全国通用).docx
- 【精品】小学教学总结模板合集7篇.doc
- 装修流程之水电工程图文并茂.pdf
- 地铁屏蔽门项目管理总结论文.doc
- 内审不合格项报告.docx
- 教务网络管理系统的功能概述.doc
- 房地产计划运营管理思维与能力培训.pptx
- 【@PPT精选-推荐】Netflix文化:自由与责任(中英文双语对照版).ppt
- 装饰装修工程造价人员培训考试任务书.doc
- 项目逆作法安全专项施工方案编制要点.doc
- 工程招投标与合同管理课件.pdf
- 企业主要人员安全生产责任制.doc
- 招标企业经营部工作内容及流程.doc
- 银行操作系统自查报告格式.docx
- 【体系管理】解决问题的六个步骤及基本思路(PPT-41页).ppt


