如何用Picasso动态设置ImageView高度?

时间:2017-03-27 16:42:35

标签: android xml imageview height picasso

我正在使用 Picasso ImageView个2列中并排显示2 GridView。 问题是我找不到一种方法来动态设置我的ImageView高度,而不会拉伸图像。

以下是代码:

ImageListAdapter.java

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    // ViewHolder pattern in play
    ViewHolder viewHolder;
    if (null == convertView) {
        viewHolder = new ViewHolder();
        convertView = inflater.inflate(R.layout.listview_item_image, parent, false);
        viewHolder.mImageView = (ImageView) convertView.findViewById(R.id.iv_button);
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }

    Picasso
            .with(context)
            .load(imageResources[position])
            .fit()
            .centerInside()
            .into(viewHolder.mImageView);

    return convertView;
}

activity_picasso.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:ads="http://schemas.android.com/apk/res-auto"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical">

    <GridView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/heenok_grid_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:numColumns="2"
        android:layout_marginBottom="50dp"/>

</RelativeLayout>

listview_item_image.xml

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/iv_button"
  android:layout_width="match_parent"
  android:layout_height="121dp"
  android:background="@null"
  android:foreground="?attr/selectableItemBackgroundBorderless" />

我在.fit.centerInside()中尝试了Adapter,并在android:layout_height="wrap_content"中添加了ImageView。它有效,但是由于大量的图像,我经历了巨大的滞后,我的图像混乱,应用程序崩溃。

如果我将android:layout_height=""更改为wrap_content而不删除.fit.centerInside(),则屏幕显示为空白,就像没有图像一样......

如果有人得到答案,我会很高兴的!

1 个答案:

答案 0 :(得分:0)

你还试过吗

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
  android:adjustViewBounds="true"
  .../>

但您似乎遇到了性能问题: 使用RecyclerView代替(如DustyMan已经提到的)GridLayoutManager