Android 获取View宽度

/*****************************************************************************
 *                         Android 获取View宽度
 * 说明:
 *     在View默认的构造函数里无法获取到View的宽高,需要采用另外的方式获取。
 *
 *                                           2016-6-15 深圳 南山平山村 曽剑锋
 ****************************************************************************/

一、参考文档:
    If I call getMeasuredWidth() or getWidth() for layout in onResume they return 0
        http://stackoverflow.com/questions/6939002/if-i-call-getmeasuredwidth-or-getwidth-for-layout-in-onresume-they-return-0

二、解决办法:
    this.post(new Runnable() {
         public void run() {
             centerX = getMeasuredWidth()/2;
             centerY = getMeasuredHeight()/2;
             ball = new Ball(centerX, centerY);
         }
    }
    );
时间: 2024-10-12 20:20:48

Android 获取View宽度的相关文章

android获取文字宽度

Paint mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mTextPaint.setColor(Color.WHITE); // Define the string. String displayText = “Hello World!”; // Measure the width of the text string. float textWidth = mTextPaint.measureText(displayText); android获

android获取view宽高的几种方法

在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

Android 获取View绘制前的高度

在Android开发过程中,我们可能需要获取View绘制前的高度或者宽度,一种的可能情形是我们初始化的时候让某个View是Visible = Gone的,当我们触发某个事件的时候需要它显示并且希望有一些动画效果.这时候我们就要获取这个View显示前即绘制前的宽度或者高度.原理很简单,我们知道,View的绘制过程发生之前,会先执行onMeasure方法.那么我们就可以利用反射来或者我们需要的值.下面给出获取高度的代码,宽度同理. private int getTargetHeight(View v

android——获取view的宽高

在activity生命周期方法:onCreate(),onStart(),onResume()中调用View.getWidth()和View.getHeight()方法获取View的高度是不可行的,因为此时布局没有加载是不可见状态. 还有当view的可见状态为:GONE,时获取的宽高也是0: 2. 解决办法: (1)直接测量: private void first() { int width = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSp

Android 获取高度宽度为0的时候的处理

转自http://my.oschina.net/xiahuawuyu/blog/167949 我们都知道在onCreate()里面获取控件的高度是0,这是为什么呢?我们来看一下示例: 首先我们自己写一个控件,这个控件非常简单: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 public class MyImageView extends ImageView { public MyImageView(Context context,

Android -- 获取View宽高

在activity中可以调用View.getWidth.View.getHeight().View.getMeasuredWidth() .View.getgetMeasuredHeight()来获得某个view的宽度或高度,但是在onCreate().onStrart().onResume()方法中会返回0,这是应为当前activity所代表的界面还没显示出来没有添加到WindowPhone的DecorView上或要获取的view没有被添加到DecorView上或者该View的visibili

Android获取view高度

getMeasuredHeight()与getHeight的区别 实际上在当屏幕可以包裹内容的时候,他们的值相等, 只有当view超出屏幕后,才能看出他们的区别: getMeasuredHeight()是实际View的大小,与屏幕无关, 而getHeight的大小此时则是屏幕的大小. 当超出屏幕后,getMeasuredHeight()等于getHeight()加上屏幕之外没有显示的大小 具体方法 我们知道在oncreate中View.getWidth和View.getHeight无法获得一个v

Android 获取View中的组件

可以把这个view强转成ViewGroup对象,再通过getChildAt(0),getChildAt(1) 获取之后AddView可能会报错:IllegalStateException: The specified child already has a parent问题解决办法 最近遇到一个很让人头疼的问题,使用viewpager动态添加页面或者删除页面时出现了问题(java.lang.IllegalStateException: The specified child already ha

android获取view高度方法

直接用view.getheightMesure获取不到(因为还没绘制出来) 用这个 int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); imageView.measure(w, h); int height = imageView.getMeasure