我只是有一个来自手机图库的图片,其中大部分是肖像,即(高度>宽度)或横向(宽度>高度)
我想以方形显示每张照片 每个图像都比我要放入的图像视图大,没关系,我希望图像被裁剪和居中,
我一直在使用imageview scaleType
FitXY
它给了我想要的东西,一个正方形,但它没有保持纵横比,所以图像看起来很扭曲。
所以我用
centerCrop
保持纵横比,但是imageview不再是正方形(由于保持纵横比)
我想我想要的是centerCrop + fitXY,即我想要保持宽高比的sqaure图像
我该怎么做?
答案 0 :(得分:0)
您可以创建自定义ImageView
,它将使用图片高度/宽度,并调整宽度/高度以保持宽高比。
像这样覆盖onMeasure
:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
Drawable d = getDrawable();
if (d != null) {
// ceil not round - avoid thin vertical gaps along the left/right edges
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = (int) Math
.ceil((float) width * (float) d.getIntrinsicHeight() / (float) d.getIntrinsicWidth());
setMeasuredDimension(width, height);
} else {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
使用此onMeasure的ImageView会将图片拉伸到其宽度并调整其高度以保持图像的纵横比。您还可以设置与宽度相同的高度以获得方形图像。
可能与:Android ImageView adjusting parent's height and fitting width
有关