专栏首页终身开发者如何在onCreate中获取View的高度和宽度

如何在onCreate中获取View的高度和宽度

如何在onCreate中获取View的高度和宽度

在开发过程中经常需要获取到View的宽和高,可以通过View.getWidth()和View.getHeight()来得到宽高。然而新手们经常在onCreate方法中直接调用上面两个方法得到的值是0!

这是为什么呢?

因为View绘制是通过两个遍历来完成的,一个measure过程,一个layout过程。只有经过“测量”和“布局”之后,View才能正确地完成绘制。而这一切是发生在onCreate方法之后的。所以在onCreate中直接使用View.getWidth()和View.getHeight()是无法得到正确的值的。

那应该怎么onCreate中获取View的宽高呢?

开发者可以通过View.post()方法来获取到View的宽高,该方法传递一个Runnable参数,然后将其添加到消息队列中,最后在UI线程中执行。

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

view.post(new Runnable(){

public void run(){

//在这里使用View.getWidth()和View.getHeight()方法可以得到正确的值

Log.d(TAG,"view.width="+view.getWidth()+",view.height="+view.getHeight());

}

});

}

本文分享自微信公众号 - 终身开发者(AngryCode),作者:AngryCode

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-10-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 据说这里可以帮你解决许多关于WebView的问题

    使用WebView开发的坑很多,这是众所周知的。本文分别对WebView的三个基本控件(俗称三剑客WebViewClient,WebChromeClient,W...

    阳仔
  • Android 组件化/模块化之路——在展示层搭建MVP结构

    Model–View–Presenter (MVP) 源于 Model–View–Controller (MVC) 的结构设计模式,它是用于展示层(Presen...

    阳仔
  • Android硬件加速相关问题总结

    从Android 3.0开始就支持硬件加速,充分利用GPU的特性,使得绘制View的时候更加平滑。例如在ListView(GridView)或者WebView中...

    阳仔
  • Android View架构总结

    View和Activity的区别 android的四大组件,Activity是四大组件中唯一一个用来和用户进行交互的组件。可以说Activity就是androi...

    xiangzhihong
  • Android UI 测试 - Espresso

    Android UI 测试框架,在真机运行,相比手动测试,相当于把流程自动化了,并且自动监测结果。

    七适散人
  • Android 解析RecyclerView(2)——带顶部View和底部View的RecyclerView

    叶应是叶
  • ViewRootImpl的独白,我不是一个View(布局篇)

    前一段时间写过两篇关于View的文章 Activity中的Window的setContentView 和 遇见LayoutInflater&Factory 。分...

    静默加载
  • Android View体系(十一)自定义ViewGroup

    相关文章 Android View体系(一)视图坐标系 Android View体系(二)实现View滑动的六种方法 Android View体系(三)属...

    用户1269200
  • 如何手动实现一个 UIScrollView

    UIKit 坐标系每一个 View 都定义了他自己的坐标系,如下图所示,x 轴指向右方,y 轴指向下方:

    s_在路上
  • [译] WindowsInsets 和 Fragment 过渡动画

    Android 开发者

扫码关注云+社区

领取腾讯云代金券