Android编程获取组件尺寸大小的方法

发布时间 - 2026-01-11 00:23:18    点击率:

本文实例讲述了Android编程获取组件尺寸大小的方法。分享给大家供大家参考,具体如下:

在oncreate()中利用view.getWidth()或是view.getHeiht()来获取view的宽和高,看似没有问题,其实他们去得值是0,并不是你想要的结果?

这是为什么呢?

在调用oncreate()方法时,界面处于不可见状态,内存加载组件还没有绘制出来,你是无法获取他的尺寸。

那如何在绘制组件之前能获取到该组件的尺寸大小呢?

这里有三种方法,经过验证的:

方法一 :

//测量方法
int width =View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
int height =View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
view.measure(width,height);
int height=view.getMeasuredHeight();
int width=view.getMeasuredWidth();

方法二 :

//增加组件绘制之前的监听
ViewTreeObserver vto =view.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
  @Override public ooleanonPreDraw() {
    int height =view.getMeasuredHeight();
    int width =view.getMeasuredWidth();
  }
});

方法三 :

//增加整体布局监听
ViewTreeObserver vto = view.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener(){
  @Override public voidonGlobalLayout() {
   view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
  int height =view.getMeasuredHeight();
  int width =view.getMeasuredWidth();
  }
});

那么,在activity进入运行期时,组件的尺寸获取方法就很简单了,直接getWidth()和getHeight().

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。


# Android  # 获取  # 组件  # 尺寸大小  # Android开发之WebView组件的使用解析  # android开发教程之view组件添加边框示例  # Android组件间通信--深入理解Intent与IntentFilter  # Android应用程序四大组件之使用AIDL如何实现跨进程调用Service  # android WebView组件使用总结  # android使用include调用内部组件的方法  # Android四大组件之Service(服务)实例详解  # Android实现动态切换组件背景的方法  # Android开发之时间日期组件用法实例  # 深入理解Android组件间通信机制对面向对象特性的影响详解  # Android开发四大组件之实现电话拦截和电话录音  # 进阶  # 这是  # 还没有  # 你是  # 相关内容  # 感兴趣  # 给大家  # 很简单  # 什么呢  # 更多关于  # 解决方法  # 所述  # 程序设计  # 你想要  # 有三种  # 到该  # 去得  # 加载  # 测量方法  # 讲述了 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 青岛网站建设如何选择本地服务器?  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  jquery插件bootstrapValidator表单验证详解  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  简历没回改:利用AI润色让你的文字更专业  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  Bootstrap整体框架之CSS12栅格系统  Python文件操作最佳实践_稳定性说明【指导】  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  如何快速搭建FTP站点实现文件共享?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  php 三元运算符实例详细介绍  英语简历制作免费网站推荐,如何将简历翻译成英文?  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  微信小程序 scroll-view组件实现列表页实例代码  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  详解Android中Activity的四大启动模式实验简述  Laravel如何与Pusher实现实时通信?(WebSocket示例)  制作旅游网站html,怎样注册旅游网站?  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  黑客入侵网站服务器的常见手法有哪些?  利用python获取某年中每个月的第一天和最后一天  JavaScript如何操作视频_媒体API怎么控制播放  微信小程序 HTTPS报错整理常见问题及解决方案  海南网站制作公司有哪些,海口网是哪家的?  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  如何利用DOS批处理实现定时关机操作详解  Python并发异常传播_错误处理解析【教程】  高端网站建设与定制开发一站式解决方案 中企动力  Laravel安装步骤详细教程_Laravel环境搭建指南  Android滚轮选择时间控件使用详解  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  zabbix利用python脚本发送报警邮件的方法  Laravel如何实现文件上传和存储?(本地与S3配置)  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  利用 Google AI 进行 YouTube 视频 SEO 描述优化  Android okhttputils现在进度显示实例代码  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  如何挑选最适合建站的高性能VPS主机?  如何快速搭建支持数据库操作的智能建站平台?