android: 在布局中的多个图像视图上单击监听器

android: one click listener on many imageviews in layout

我有以下场景:

在布局中,我将图像视图水平和垂直对齐,如图所示。

首先,为此应使用哪种布局?相对布局还是框架布局? ListView里面的layout?

此外,我如何才能只编写一个点击侦听器来获取被点击的图像视图,而不是为每个图像视图都编写 setOnClickListener?

A GridView 非常适合这个。有关 GridView 的更多信息,请查看 here.

关于您的 onClickListener 问题:没有简单的方法可以做到这一点,但是您可以这样做:

  1. 有一个包含每个 ImageView id 的数组,如下所示:

    public static final int[] IMAGE_VIEWS = {R.id.imageView1, R.id.imageView2, R.id.imageView3 /*etc*/}; //Make sure to list from the first imageview to the last image view in correct order
    
  2. 定义一个 onClickListener

    private View.OnClickListener imageViewListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            for (int i = 0; i < IMAGE_VIEWS.length; i++) {
                if (v.getId() == IMAGE_VIEWS[i]) {
                    doSomethingWithImageViewClick(i); //if ImageView 4 was clicked, variable 'i' will be 3 (because arrays start at index = 0).
                }
            }
        }
    }
    
  3. 为所有图像视图设置 onClickListeners:

    final ImageView view1 = (ImageView) view.findViewById(R.id.imageView1);
    view1.setOnClickListener(imageViewListener);
    //etc
    

GridView可以实现效果。我想你可以看看这个 Grid View.

在布局中使用'GridView',使用'setOnItemClickListener'处理点击事件,

您可以在下面找到更多详细信息 link GridView.