android获取view宽高的几种方法,解决获取高宽为0问题

原创 2015年11月18日 16:57:43

在onCreate方法中我们通过mView.getWidth()和mView.getHeight()获取到的view的宽高都是0,那么下面几种方法就可以在onCreate方法中获取到view的宽高。

1、

int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
  int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
  mTextView.measure(w, h);
  int height = mTextView.getMeasuredHeight();
  int width = mTextView.getMeasuredWidth();
  System.out.println("measure width=" + width + " height=" + height);

2、mViewTreeObserver = mTextView.getViewTreeObserver();

mViewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener()
    {
      @Override
      public void onGlobalLayout()
      {
        // TODO Auto-generated method stub
        mTextView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
        System.out.println("onGlobalLayout width=" + mTextView.getWidth() + " height=" + mTextView.getHeight());
      }
    });

3、

mViewTreeObserver.addOnPreDrawListener(new OnPreDrawListener()
    {
      @Override
      public boolean onPreDraw()
      {
        // TODO Auto-generated method stub
        mTextView.getViewTreeObserver().removeOnPreDrawListener(this);
        System.out.println("onPreDraw width=" + mTextView.getWidth() + " height=" + mTextView.getHeight());
        return true;
      }
    });

4、

  @Override
  public void onWindowFocusChanged(boolean hasFocus)
  {
    // TODO Auto-generated method stub
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus)
    {
      System.out.println("onWindowFocusChanged width=" + mTextView.getWidth() + " height=" + mTextView.getHeight());
    }
  }


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

android onCreate中获取view宽高为0的多种解决方法

这个问题大家肯定遇到过不止一次,其实很简单,解决它也很容易,但是咱们追求的毕竟不是解决它,而是找到几种方法去解决,并且这么解决的原理是什么。   这里列出4种解决方案: Activity/Vi...

Android 获取view的宽高方法

如果在Activity启动时想要获取某个view的宽高,发现获取到的是0,这种情况产生的原因是activity启动的时候,view的绘制和activity不是同步执行的,也就是measure还未测量完...

Android在onCreate方法中获取view的宽高

可能很多人认为获取view的宽高是很容易的事情,直接调用getWidth()和getHeight()方法不就行了嘛,但在onCreate方法中得到的永远是0,原因很简单,这两个方法是在view执行on...

Android中获取View宽高方法

原文链接:http://www.jianshu.com/p/f56c92e29deaAndroid开发中经常需要获取控件的宽高,比如前不久我在写一个图片加载库时,因为需要对Bitmap进行裁剪就遇到了...

Android中获取View宽高方法

今天遇到一个问题,就是view获取宽度,高度都为0的问题,,,其实这个大家都遇到过,,,这里转载别人的,大家好共同学习。 本文转载于:http://www.jianshu.com/p/f56c92e...

解决在onCreate()过程中获取View的width和Height为0的几种方法

在onCreate()获取view的width和height会得到0的解决办法

获取View 宽高的一个小问题

在开发工作中经常需要获取view的宽高来执行一些操作,常用的做法就是view.getMeasuredHeight() 或者 view.getMeasuredWidth(). 方法是没错,但是当我在ac...

Android从零单排之获取ImageView的宽高为0?

问题描述     说起来我也够菜的!⊙﹏⊙b汗。     今天搞了一个关于图片的demo,想动态的改变一张图片的大小和margin值。但是在activity中获取imageview的宽度和高度的时候,...

通过View.post()获取View的宽高引发的两个问题:1post的Runnable何时被执行,2为何View需要layout两次;以及发现Android的一个小bug

前言 在Android里,获取View宽高的时机是个老生常谈的话题了。众所周知,在Oncreate里直接调用View.getWidth或者View.getMeasuredWidth返回都是0。所以获...

Android 获取 View 宽高的常用正确方式,避免为零

Android 获取 View 宽高的常用正确方式,避免为零 相信有很多朋友都有过在 Activity 中通过 getWidth() 之类的方法获取 View 的宽高值,可能在 onCreate(...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)