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