在运行时在px中设置ImageView的大小

时间:2011-05-29 19:32:51

标签: android image

我想使用整个可用宽度将8个图像拇指放在一条水平线上 从webservice中检索图像,这可以让我指定尺寸 我尝试了以下方法:

int widthPx = container.getWidth();
LinearLayout thumbs = (LinearLayout)curView.findViewById(R.id.thumbs);
    for(int i=0; i<pics.length; i++) {
        ImageView iv = new ImageView(mContextt);

        int thumbSize = widthPx / 8;

        try {
            String url = "http://someurl/" + pics[i] + "&width=" + thumbSize  + "&height=" + thumbSize;
            URL imgUrl = new URL(url);
            Drawable imgD = Drawable.createFromStream(imgUrl.openStream(), "src");
            iv.setImageDrawable(imgD);
        }
        catch (Exception e) {
            Log.e(TAG, "loading image failed");
            e.printStackTrace();
        }

        thumbs.addView(iv);
    }

LinearLayout拇指有android:layout_width =“fill_parent设置。此代码生成的拇指明显小于宽度的1/8。为什么会这样?正确的方法是什么?

更新:
此代码位于片段的 onCreateView 内。虽然我的宽度值是根据根视图计算的并且是正确的,但是 thumbs.getWidth()返回0,尽管之前视图是膨胀的,并且由于layout_width已设置,因此宽度也应该为480 to fill_parent。我不确定这是不是问题。

我的假设是否正确,默认情况下创建的ImageViews的布局设置为wrap_content?如果没有,如何使用Java代码设置它?

2 个答案:

答案 0 :(得分:3)

添加固定大小的ImageView,即:

thumbs.addView (iv, new LayoutParams(thumbSize, thumbSize));

回答(部分)评论中的问题:

ImageView API说:

  

负责从图像计算其测量值,以便可以在任何布局管理器中使用

因此可能假设160 dpi为60px(我可能错了)。

答案 1 :(得分:0)

我建议使用它:

widthPx = getWindowManager().getDefaultDisplay().getWidth();