gpt4 book ai didi

android - 调整 ImageView 的大小以适应纵横比

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:32:07 28 4
gpt4 key购买 nike

我需要调整 ImageView 的大小,使其适合屏幕,并保持相同的纵横比。满足以下条件:

  • 图像是固定宽度(屏幕宽度的大小)
  • 图片是从网上下载的,即尺寸只能稍后确定
  • 每张图片的纵横比会有所不同;有的高,有的方,有的平
  • ImageView 的高度 需要根据
  • 的纵横比改变,变大或变小
  • 多余的高度被裁剪,不能像默认那样有很多空白空间。

例如,在 400 像素宽的屏幕上显示一张 50x50 的小图片会将该图片放大到 400x400 像素。 800x200 的图像将缩放到 400x100。

我已经查看了大多数其他线程,许多建议的解决方案,例如简单地更改 adjustViewBoundsscaleType 只会缩小图像,而不会放大图像.

最佳答案

我在 Bob Lee 在这篇博文中的回答的帮助下创建了它:Android: How to stretch an image to the screen width while maintaining aspect ratio?

package com.yourpackage.widgets;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ImageView;

public class AspectRatioImageView extends ImageView {

public AspectRatioImageView(Context context) {
super(context);
}

public AspectRatioImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}

public AspectRatioImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = width * getDrawable().getIntrinsicHeight() / getDrawable().getIntrinsicWidth();
setMeasuredDimension(width, height);
}
}

现在在 XML 中使用它:

<com.yourpackage.widgets.AspectRatioImageView android:layout_centerHorizontal="true"
android:src="@drawable/yourdrawable" android:id="@+id/image"
android:layout_alignParentTop="true" android:layout_height="wrap_content"
android:layout_width="match_parent" android:adjustViewBounds="true" />

玩得开心!

关于android - 调整 ImageView 的大小以适应纵横比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12400113/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com