最近有个需求,是往一个LinearLayout中去添加ImageView,imageView是动态生成的,然后设置imageView的属性,但是不管怎么设置ScaleType,都达不到自己喜欢的状态, 显示原图大小的话会在ImageView的上下有留白,如图
初步猜想是由于原始照片比较大,然后缩放后ImageView的宽高还是原始图片的宽高,所以第一步我就想拿到图片显示的高度,这里有个Matrix,有兴趣的可以去看看,但是还是没有得到,但是在我要放弃的时候看到了一个属性ImageView.setAdjustViewBounds(true);,需要跟setMax宽或高配合用,用后效果如图
代码放在下头:
LayoutParams lParams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
lParams.topMargin = 20;
int size = pictures.length;
for(int i=0;i<size;i++){
ImageView img = new ImageView(this);
img.setLayoutParams(lParams);
img.setId(i);
img.setMaxWidth(lParams.width);
img.setAdjustViewBounds(true);
img.setScaleType(ScaleType.FIT_CENTER);
img.setOnClickListener(imClick);
imgLoader.displayImage(pictures[i], img, imOption.getDetailImage());
lin_group.addView(img);
}