android:在布局中的许多imageview上单击一个监听器

时间:2015-09-25 11:52:34

标签: android android-layout android-fragments android-activity android-imageview

我有以下情况:

enter image description here

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

首先,应该使用哪种布局? RelativeLayout还是FrameLayout? ListView里面的布局?

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

3 个答案:

答案 0 :(得分:2)

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. 为所有imageViews设置onClickListeners:

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

答案 1 :(得分:0)

GridView 可以达到效果。我想你可以看一下Grid View

答案 2 :(得分:0)

使用&#39; GridView&#39;在布局和使用&#39; setOnItemClickListener&#39;处理点击事件,

您可以在以下链接中找到更多详细信息  GridView