android: 在布局中的多个图像视图上单击监听器
android: one click listener on many imageviews in layout
我有以下场景:
在布局中,我将图像视图水平和垂直对齐,如图所示。
首先,为此应使用哪种布局?相对布局还是框架布局? ListView里面的layout?
此外,我如何才能只编写一个点击侦听器来获取被点击的图像视图,而不是为每个图像视图都编写 setOnClickListener?
A GridView
非常适合这个。有关 GridView 的更多信息,请查看 here.
关于您的 onClickListener 问题:没有简单的方法可以做到这一点,但是您可以这样做:
有一个包含每个 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
定义一个 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).
}
}
}
}
为所有图像视图设置 onClickListeners:
final ImageView view1 = (ImageView) view.findViewById(R.id.imageView1);
view1.setOnClickListener(imageViewListener);
//etc
GridView可以实现效果。我想你可以看看这个 Grid View.
在布局中使用'GridView',使用'setOnItemClickListener'处理点击事件,
您可以在下面找到更多详细信息 link
GridView.
我有以下场景:
在布局中,我将图像视图水平和垂直对齐,如图所示。
首先,为此应使用哪种布局?相对布局还是框架布局? ListView里面的layout?
此外,我如何才能只编写一个点击侦听器来获取被点击的图像视图,而不是为每个图像视图都编写 setOnClickListener?
A GridView
非常适合这个。有关 GridView 的更多信息,请查看 here.
关于您的 onClickListener 问题:没有简单的方法可以做到这一点,但是您可以这样做:
有一个包含每个 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
定义一个 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). } } } }
为所有图像视图设置 onClickListeners:
final ImageView view1 = (ImageView) view.findViewById(R.id.imageView1); view1.setOnClickListener(imageViewListener); //etc
GridView可以实现效果。我想你可以看看这个 Grid View.
在布局中使用'GridView',使用'setOnItemClickListener'处理点击事件,
您可以在下面找到更多详细信息 link GridView.