我写了以下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!
答案 0 :(得分:0)
你得到0
因为你:
wrap_content
layout_width
src
属性,这意味着没有为您设置图像ImageView
由于空图片的尺寸为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,因为没有任何内容可以包围图像视图。