2

このチュートリアルGridView Androidを使用して作成したグリッドビューがあります。これは問題なく動作します。アイテムがクリックされた場合、グリッドビューのアイテムに画像をオーバーレイしたいと思います。別のグリッドビューを使用してそれらをマージするか、単に多くの画像ビューを持っているかどうか、これを行う方法がわかりません:s. 質問を明確にするために、グリッドビューアイテムにオーバーレイするにはどうすればよいですか? 前もって感謝します!

4

1 に答える 1

3

したがって、これを実現する方法はいくつかありますが、おそらく最も柔軟なのは、getViewメソッドでカスタム ビューを使用することです。

ImageAdapter クラスにLayoutInflaterを追加します。

private LayoutInflater mInflater;

コンストラクターで初期化します。

public ImageAdapter(Context c) {
    mContext = c;

    // Initialise the inflater
    mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

これは、次のような xml ビューをインフレートするために使用されます。

<RelativeLayout
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
    <ImageView
      android:id="@+id/mainImage"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
    />
    <ImageView
      android:id="@+id/overlayImage"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:visibility="gone"
    />
</RelativeLayout>

ImageAdapter クラスgetViewメソッドでこのビューをインフレートします。

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

    // RelativeLayout as used in the xml view
    RelativeLayout customView;

    if (convertView == null) {  // if it's not recycled, inflate
        customView = (RelativeLayout) mInflater.inflate(R.layout.customview, null);
    } else {
        imageView = (RelativeLayout) convertView;
    }

    // Get the mainImageView from the parent
    ImageView mainImage = (ImageView) customView.findViewById(R.id.mainImage);
    imageView.setImageResource(mThumbIds[position]);

    // Overlay view
    ImageView overlayImage = (ImageView) customView.findViewById(R.id.overlayImage);
    overlayImage.setImageResource(mOverlayThumbIds[position]); // new array containing overlay references

    return customView;
}

次に、クリック時にオーバーレイ画像を表示します

gridview.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

        ImageView overlayImage = (ImageView) v.findViewById(R.id.overlayImage);
        overlayImage.setVisibility(View.VISIBLE);

    }
});

これは非常に基本的な例ですが、このアプローチが役立つことを願っています。

于 2012-05-08T12:21:33.673 に答える