我想使用整个可用宽度将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代码设置它?
答案 0 :(得分:3)
添加固定大小的ImageView
,即:
thumbs.addView (iv, new LayoutParams(thumbSize, thumbSize));
回答(部分)评论中的问题:
ImageView API说:
负责从图像计算其测量值,以便可以在任何布局管理器中使用
因此可能假设160 dpi为60px(我可能错了)。
答案 1 :(得分:0)
我建议使用它:
widthPx = getWindowManager().getDefaultDisplay().getWidth();