Android 是否为每个项目使用OnClickListeners的ScrollView?
我制作了一个ScrollView,并在其中填充了带有OnClickListeners的ImageView,但现在当我尝试滚动ScrollView时,似乎OnClickListeners挡住了我的去路,无法平滑滚动 除了使用ListView而不是ScrollView之外,还有其他方法可以解决这个问题吗Android 是否为每个项目使用OnClickListeners的ScrollView?,android,Android,我制作了一个ScrollView,并在其中填充了带有OnClickListeners的ImageView,但现在当我尝试滚动ScrollView时,似乎OnClickListeners挡住了我的去路,无法平滑滚动 除了使用ListView而不是ScrollView之外,还有其他方法可以解决这个问题吗 谢谢 对于每个ImageView,不必有OnClickListener 回调定义是 public abstract void onClick (View v) 其中v是单击的视图 根据您要执行的操
谢谢 对于每个ImageView,不必有OnClickListener 回调定义是
public abstract void onClick (View v)
其中v
是单击的视图
根据您要执行的操作,您可以识别特定视图,也可以不识别。如果您只是想做一些普通的事情(例如,应用色调),那么这是非常简单的
...
public void onClick(View v) {
ImageView iv = (ImageView) v;
iv.setTint(Color.BLUE); // Or whatever generic operation you want
}
如果您需要明确地标识视图,例如它是XML菜单的一部分,那么我通常使用itemID来标识它
...
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.save:
//do stuff
break;
case R.id.open:
//do stuff
break;
}
}
如果视图不是静态的,则可以使用setTag()
和getTag()
方法唯一地标识(并关联有用数据!)每个视图:
...
public void onClick(View v) {
// the MyViewInfo object was associated with the view somewhere else, presumably when the view was created
MyViewInfo info = (MyViewInfo) v.getTag();
File datafile = info.getFileName();
...
}
}
谢谢你的解释!还有一件事,因为它是动态的,所以我应该如何将这个onClick函数与设置了标记的ImageView相关联呢?您的类X包含
onClick
方法,它必须实现View.onClickListener
接口。然后,您需要为每个视图调用setOnClickListener(x),其中x是x的一个实例。如果容器视图足够聪明,可以将单击事件传播到其所有子视图,那么您可能只需要在父视图上调用setOnClickListener
。