Android:关于RelativeLayout中窗口小部件的宽度

时间:2011-11-23 07:55:20

标签: android

我写了以下xml:

    <RelativeLayout>
    <LinearLayout>
    ......//widgets
    </LinearLayout>
    <ImageView
 android:id="@+id/img"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:src="@drawable/pic"
/>
    </RelativeLayout>

在代码中我想获得 img 的宽度。但总是得到 0 。 为什么? 提前致谢! PS:对不起,我忘记添加android:src="...";但它仍然是0!

2 个答案:

答案 0 :(得分:0)

你得到0因为你:

  1. 为您wrap_content
  2. layout_width
  3. 您没有指定src属性,这意味着没有为您设置图像ImageView
  4. 由于空图片的尺寸为0且您有wrap_content,因此您获得0

答案 1 :(得分:0)

我认为您正在尝试获取onCreate方法的宽度。如果是这种情况,UI尚未开始绘制,并且UI元素未被测量,因此imageView.getWidth()应返回0.要获得onCreate方法的宽度,这应该可行。将代码放在onCreate方法中。

ViewTreeObserver vto = imageView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
        Log.e("Width",Integer.toString(imageView.getWidth()));

    }
});

但你需要先为imageview指定一个图像,否则宽度将为0,因为没有任何内容可以包围图像视图。