2

这是我创建新 ImageView 的源代码:

    ImageView image = new ImageView(this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
            params.width = screen_dimens(0.5, "w");
            params.height = screen_dimens(0.5, "w");
            image.setLayoutParams(params);

screen_dimens(0.5, "w")=屏幕宽度的 50%)

但是现在当我想获取图像的宽度时,我得到以下结果:
image.getWidth() => 0
image.getLayoutParams().width => 360

现在这两个功能有什么区别?以及如何设置图像宽度以便该getWidth()方法也返回正确的值?

4

3 回答 3

5

即使您使用 LayoutParams 为 ImageView 或任何 View 设置了宽度和高度,imageView.getWidth() 也始终返回 0,直到它在其父级中绘制。

于 2013-10-30T11:18:07.110 回答
2

使用它来设置宽度和高度:

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(100, 100);
iv.setLayoutParams(layoutParams);
于 2013-10-30T11:13:58.027 回答
0

你可以用

    image.post(new Runnable() {
        public void run() {
            image.getMeasuredHeight();
        }
    });

代替

   image.getWidth()
于 2013-10-30T11:15:26.437 回答