所以我的任务是创建一个水平滚动的图像按钮阵列,这些按钮基本上是用户的照片头像。这些头像不受纵横比或大小的限制,所以我一直在尝试缩放和格式化它们的方法。我已经通过scaletype="fitCenter“和静态的宽度和高度让它们缩放。但我真正想让他们做的是互相对抗。目前,如果图像的高度大于高度,你会得到一种信箱,但在侧面与顶部(空白区域)。我尝试了所有不同的缩放值,将每个图像地图包装在一个线性布局中,等等,但我尝试的任何东西似乎都无法摆脱这些(同时按比例显示整个图像)。有没有办法做到这一点?
发布于 2011-09-17 06:49:38
只是重申一下我认为你正在做的事情,你有三个镜像场景:
如果所有图像都是正方形或横向的,使用FIT_CENTER对固定大小的ImageViews (或ImageButtons)行进行布局非常适合您的需要,因为缩放总是会使图像拉伸到视图的水平边界(最大尺寸)。但是,对于肖像图像,缩放会使视图处于固定大小视图的边界内,以便可以看到整个图像高度。
如果您需要保持图像的纵横比,实际上没有ScaleType可以帮助实现这一点,因为逻辑是圆形的(使视图与图像相适应,同时使图像与视图相适应)。解决方案是调整每个ImageView的大小(具体地说,宽度),以匹配图像将缩放到的大小。下面是一个工厂方法的示例,您可以使用它来生成ImageView以适合您想要放入其中的图像。如果您愿意,还可以对此稍作修改,以重置现有ImageView上的参数:
private ImageView getImageViewForThumbnail(Bitmap thumbnail) {
float viewHeight = //Your chosen fixed view height
float scale = ((float)thumbnail.getHeight()) / viewHeight;
float viewWidth = thumbnail.getHeight() / scale;
ImageView view = new ImageView(this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams((int)viewWidth, (int)viewHeight);
view.setLayoutParams(params);
view.setScaleType(ScaleType.FIT_XY);
view.setImageBitmap(thumbnail);
return view;
}基本上,您只是在计算ImageView的宽高比应该是多少,才能与您为它们选择的固定高度相匹配。
HTH
发布于 2011-09-17 06:36:55
使用scaleType fitXY,如果图像尺寸较小,它会将图像拉伸到指定的布局参数;如果图像较大,则还会将图像缩小到指定的布局参数。关键的一点是提到imageView的图像布局参数,即图像的宽度和高度。
https://stackoverflow.com/questions/7450998
复制相似问题