android获取view宽高的几种方法 - ysl_longer

来源:互联网 发布:苹果mac更新系统版本 编辑:程序博客网 时间:2024/05/21 05:19

android获取view宽高的几种方法 - ysl_longer

在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());    }  }

0 0
原创粉丝点击