Android:如何在动态创建的ImageView上检测触摸事件

时间:2013-12-27 13:30:10

标签: android android-layout android-imageview

我有以下设计:

<LinearLayout>
  <ScrollLayout>
    <LinearLayout> .... </LinearLayout> ----> TextView and ImageView dynamically created in this LinearLayout
  </ScrollLayout>
</LinearLayout>

我需要检测动态创建的ImageView(s)上的触摸事件。我不知道将动态创建多少ImageView 。如何检测用户触摸了哪个ImageView

感谢您的帮助。

2 个答案:

答案 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
    }
});