2

我有一个使用本教程GridView Android创建的网格视图,它工作得很好。现在,如果单击该项目,我想将图像叠加到 gridview 的项目上。我不确定如何做到这一点,无论我是使用另一个 gridview 并合并它们还是只有很多图像视图:s。只是为了澄清这个问题:我如何覆盖到 gridview 项目上?提前致谢!

4

1 回答 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 回答