我有一个使用本教程GridView Android创建的网格视图,它工作得很好。现在,如果单击该项目,我想将图像叠加到 gridview 的项目上。我不确定如何做到这一点,无论我是使用另一个 gridview 并合并它们还是只有很多图像视图:s。只是为了澄清这个问题:我如何覆盖到 gridview 项目上?提前致谢!
问问题
2218 次
1 回答
3
所以有几种方法可以实现这一点,但最灵活的可能是在getView
方法中使用自定义视图。
将LayoutInflater添加到您的 ImageAdapter 类:
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 回答