我有以下设计:
<LinearLayout>
<ScrollLayout>
<LinearLayout> .... </LinearLayout> ----> TextView and ImageView dynamically created in this LinearLayout
</ScrollLayout>
</LinearLayout>
我需要检测动态创建的ImageView(s)
上的触摸事件。我不知道将动态创建多少ImageView
。如何检测用户触摸了哪个ImageView
?
感谢您的帮助。
答案 0 :(得分:2)
您需要在java代码中创建一个[可能更多] View.OnClickListeners。然后,添加每个ImageView时,可以使用View.setOnClickListener将OnClickListener分配给它。要确定单击了哪个,可以使用View.setTag()设置“标记”,然后在调用onClick时,使用View.getTag()确定单击了哪个。标签应该是唯一可识别的。
这是一些粗略的代码(未经测试):
private OnClickListener imageViewListener extends View.OnClickListener{
public void onClick(View v){
Intent i = new Intent(v.getContext(), NewActivity.class);
i.putExtra("ImageURI", v.getTag().toString());
startActivity(i);
}
}
然后在添加图像时,只需设置标记和监听器:
for(String uri: someList){
ImageView iv = new ImageView(this);
iv.setTag(uri);
iv.setImageUri(uri);
iv.setOnClickListener(imageViewListener);
}
答案 1 :(得分:1)
您应该使用View.OnTouchLisetener课程。因此,在初始化ImageView之后,将此调用添加到它:
imageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent e) {
//Your code here
}
});