GalleryViewを入れるための膨らんだImageViewは適切なサイズではありません

StackOverflow https://stackoverflow.com/questions/2869749

  •  03-10-2019
  •  | 
  •  

質問

GalleryViewで表示できる描画可能なものを拡大するImageViewを膨らませようとしています。画像ビューの属性が適用されないことを除いて、ビューを膨らませるための私のコードは正常に機能しているようです。具体的には、膨らんだImageViewには、XMLのAndroid:レイアウトパラメーションを介して設定した幅/高さがありません。

誰かが私が間違っていることを私に見せてもらえますか?

DPの画像の幅/高さを設定して、複数の画面DPIにわたって正しいサイズになり、Android 1.5+をサポートします。その結果、次のようなものを使用できません。

i.setLayoutParams(new Gallery.LayoutParams(150, 116)

私のレイアウト定義は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="150dp" android:layout_height="116dp"
    android:background="@drawable/gallery_item_background"
    android:scaleType="fitXY" />
</ImageView>

そして、私がImageViewを膨らませるために使用しているスニペットは次のとおりです。

    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = getLayoutInflater();
        ImageView i = (ImageView) inflater.inflate(R.layout.gallery_item, null);
        i.setImageResource(mImageIds.get(position));
        i.setScaleType(ImageView.ScaleType.FIT_XY);

        return i;
    }
役に立ちましたか?

解決

トリックは、単に次のバージョンを使用することです inflate():

inflater.inflate(R.layout.gallery_item, parent, false);

最後の2つのパラメーターは必須です。 「null」を親として渡すと、インフレーターはどのタイプのレイアウトパラメーターを作成するかを知りません。したがって、すべてを無視します android:layout_ XML属性。最後のパラメーターは、単にインフレーターに、膨らんだビューを親にすぐに追加しないように指示します。あなたが本当の場合(少なくともアダプターの内部 getView() 方法)、悪いことが起こります。

他のヒント

確かではありませんが、これはうまくいくかもしれません。 XMLのImageViewにIDを指定します(「@+ID/Image」だとします:

public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = getLayoutInflater();
    View view = (View) inflater.inflate(R.layout.gallery_item, null);
    ImageView i = (ImageView) view.findViewById(R.id.image);
    i.setImageResource(mImageIds.get(position));
    i.setScaleType(ImageView.ScaleType.FIT_XY);

    return view;
}

ちなみに、ビューをリサイクルするために、ConvertViewがnullであるかどうかを確認することを最適化する必要があります。これをチェックして: http://code.google.com/events/io/2009/sessions/turbochargeuiandroidfast.html

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top