当前位置: 代码迷 >> Android >> 怎么获取android:layout_width="match_parent"这种控件的宽度呢
  详细解决方案

怎么获取android:layout_width="match_parent"这种控件的宽度呢

热度:49   发布时间:2016-04-27 23:04:21.0
如何获取android:layout_width="match_parent"这种控件的宽度呢
我创建了一个位图控件
 <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/abc_ab_share_pack_holo_light" />

如上的属性 

我想在程序中读取这个位图的宽和高

我使用了如下的语句


iv = (ImageView)this.findViewById(R.id.imageView1);
Toast.makeText(this,String.valueOf(iv.getWidth()) + "*" + String.valueOf(iv.getHeight()), 1).show();

发现打印的结果是0*0
我如何才能在程序中获取它的宽度和高度呢???
------解决思路----------------------
还未计算其大小,
http://www.2cto.com/kf/201410/341592.html
------解决思路----------------------
调用getmeasurewidth()
------解决思路----------------------
你获取的时候,控件都还没画好,肯定 是0.
------解决思路----------------------
不要在oncreate()方法里面获取
------解决思路----------------------
验证了下。。发现要考虑很多。直接贴代码吧。。
public class MeasureActivity extends Activity{
ImageView iv;
int width;
int height;
@SuppressLint("NewApi") @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 iv = (ImageView)this.findViewById(R.id.imageView1);
ViewTreeObserver vto = iv.getViewTreeObserver();   
        vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
            @SuppressWarnings("deprecation")
@Override  
            public void onGlobalLayout() { 
             removeOnGlobalLayoutListener(iv,this);
             height=iv.getWidth();
             width=iv.getHeight();
             System.out.println("--->"+width+"*"+height);
            }   
        });

}
@SuppressLint("NewApi") public static void removeOnGlobalLayoutListener(View view,OnGlobalLayoutListener victim){
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.JELLY_BEAN){
view.getViewTreeObserver().removeOnGlobalLayoutListener(victim);
}else{
view.getViewTreeObserver().removeGlobalOnLayoutListener(victim);
}
}

}
  相关解决方案