2017-03-27 18 views
0

私はピカソを使用して、2 ImageViewを横に並べてGridViewの2列を表示しています。 画像を伸ばすことなく、ImageViewの高さを動的に設定する方法が見つからないことがあります。ここピカソでImageViewの高さを動的に設定する方法は?

コードである:

listview_item_image.xml

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> 

<?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" /> 

私は私のAdapter.fit.centerInside()ずにしようとした私のImageViewandroid:layout_height="wrap_content"を追加しました。それは動作しますが、画像の数が多いため、私はの巨大なを経験しています。私の画像は乱れていて、アプリはちょうどクラッシュします。

私は.fit.centerInside()を削除せずに私のandroid:layout_height=""wrap_contentにを変更すると、画面はちょうど空白になって何の画像がありませんでしたかのように誰もが答えを得た

たら...、私は喜んでいると思います!

+0

まずで、あなたがアンドロイドを指定した場合:scaleType = ImageViewの "fitXY"は、ImageViewの画像と同じ比率でなければ歪んでしまいます。あなたが達成したい効果に応じて、異なるスケールタイプを選択してください。 .fit.centerInside()は、別のscaleTypeを使用している場合はそれを削除するだけで役に立ちません。また、RecyclerViewを使用して、少ないものを使用するようにしてください...もっともっと少ない...メモリを使用しないと、あまりにも多くの画像でメモリクラッシュに直面します。 – DustyMan

答えて

0

はあなたにも

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

を試みたが、あなたは、パフォーマンスの問題を持っているように見える: 使用RecyclerView代わりに(DustyManは、すでに述べたように)すべてのGridLayoutManager

関連する問題