gpt4 book ai didi

android - 缩放图像以填充 ImageView 宽度并保持纵横比

转载 作者:IT老高 更新时间:2023-10-28 12:54:08 24 4
gpt4 key购买 nike

我有一个 GridViewGridView 的数据是来自服务器的请求。

这是GridView中的item布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/analysis_micon_bg"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingBottom="@dimen/half_activity_vertical_margin"
android:paddingLeft="@dimen/half_activity_horizontal_margin"
android:paddingRight="@dimen/half_activity_horizontal_margin"
android:paddingTop="@dimen/half_activity_vertical_margin" >

<ImageView
android:id="@+id/ranking_prod_pic"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:contentDescription="@string/app_name"
android:scaleType="centerCrop" />

<TextView
android:id="@+id/ranking_rank_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<TextView
android:id="@+id/ranking_prod_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<TextView
android:id="@+id/ranking_prod_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>

我从服务器请求数据,获取图像 url 并将图像加载到 Bitmap

public static Bitmap loadBitmapFromInputStream(InputStream is) {
return BitmapFactory.decodeStream(is);
}

public static Bitmap loadBitmapFromHttpUrl(String url) {
try {
return loadBitmapFromInputStream((InputStream) (new URL(url).getContent()));
} catch (Exception e) {
Log.e(TAG, e.getMessage());
return null;
}
}

adapter中有getView(int position, View convertView, ViewGroup parent)方法的代码

Bitmap bitmap = BitmapUtil.loadBitmapFromHttpUrl(product.getHttpUrl());
prodImg.setImageBitmap(bitmap);

图片尺寸为210*210。我在 Nexus 4 上运行我的应用程序。图像确实填充了 ImageView 宽度,但 ImageView 高度没有缩放。 ImageView 不显示整个图像。

我该如何解决这个问题?

最佳答案

不使用任何自定义类或库:

<ImageView
android:id="@id/img"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:scaleType="fitCenter" />

scaleType="fitCenter"(省略时默认)

  • 将使其尽可能宽,并根据需要保持纵横比。

scaleType="centerInside"

  • 如果 src 的固有宽度小于父宽度
    将图像水平居中
  • 如果 src 的固有宽度大于父级宽度
    将使其与父级允许的一样宽,并按比例缩小以保持纵横比。

使用 android:srcImageView.setImage* 方法没关系,关键可能是 adjustViewBounds

关于android - 缩放图像以填充 ImageView 宽度并保持纵横比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18077325/

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