我创建了一个位图控件
<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);
}
}
}