我正在使用 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()
,则屏幕显示为空白,就像没有图像一样......
如果有人得到答案,我会很高兴的!
答案 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