当前位置: 首页 > 编程笔记 >

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

乌翰学
2023-03-14
本文向大家介绍Android编程获取组件尺寸大小的方法,包括了Android编程获取组件尺寸大小的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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程序设计有所帮助。

 类似资料:
  • 问题内容: 我目前正在开发一个无法使用模式窗口的应用程序(由于某些应用程序的限制)。但是,在某些情况下,我想模拟一个弹出窗口。为此,我动态创建了一个以centralwidget作为父级的小部件,并使用move()方法将其放置在我想要的位置。我想知道是否有一种方法可以在给定的时间获取小部件的尺寸(考虑到可以随时调整mainWindow的大小),这样我就可以将占位符弹出窗口(一个简单的小部件)居中中央

  • 本文向大家介绍jQuery循环动画与获取组件尺寸的方法,包括了jQuery循环动画与获取组件尺寸的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery循环动画与获取组件尺寸的方法。分享给大家供大家参考。具体分析如下: 一、前言 1、jQuery中的animate()方法允许您创建自定义的动画。 animate() 方法几乎可以操作所有 CSS 属性,不过当使用 animate(

  • 我考虑了两种解决方法: 通过php exec使用GhostScript读取上传的文件并获取其尺寸-我还不能让这种方法起作用 使用PHP PDF库读取上传的文件并获取其尺寸(如fdpi/fpdf)-我有一些东西在工作(我想!) 至于Ghostscript,我在这里找到了这个答案,因此建议使用另一个名为(我确实是按照评论建议先下载的)。然而,我无法让它正常工作。在将其添加到任何PHP脚本之前,我尝试运

  • 问题内容: python中是否有一种方法可以获取视频文件或其他可实现此目标的库的尺寸?相当于一个或什么?谢谢。 问题答案: 在我的上一家公司中,我们遇到了类似的问题,但我找不到任何python库来执行此操作。因此,我最终使用了来自python的mediainfo,media info也具有命令行选项,并且很容易解析输出,因此实际上,使用media- info的python模块就足够了。它具有进一步

  • 问题内容: 我想通过c获取屏幕尺寸。我知道jni支持从c调用Java。但是有人知道另一种方法吗?我的意思是从低级模块获取屏幕大小,而无需调用Java。 我认为/ dev / graphics与我的问题有关 问题答案: 是的,您可以从/ dev / graphics / fb0获得屏幕分辨率,但是(至少在我的手机上)读取权限仅限于root用户和“ graphics”组中的用户。无论如何,您可以执行以

  • 因为有两种方法可以获得尺寸。从13级以上的API来看,这种方法对我很有效 14岁以下,这种方法对我有效 我可以得到所有API级别的屏幕大小吗???请帮帮我。