使用自己的onTouchListener以编程方式添加ImageView

时间:2014-05-20 14:40:21

标签: android

我有一个按钮,我想在每次按下它时创建一个ImageView,这个ImageView可以拥有自己的onTouchListener吗? 我有一个按钮创建新的,每当我按下它时,屏幕上会出现一个球,我将能够移动它,当我按下New时再次按下New时,另一个球将出现在屏幕上,具有相同的属性和能力拖放。我在问,因为我在以编程方式创建ImageView时遇到问题,例如:

save = (Button) findViewById(R.id.savebtn);

        save.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                ImageView asds = new ImageView(this);
                asds.setBackgroundResource(R.drawable.element_wall);

                asds.setOnTouchListener(new OnTouchListener()
                {

                    public boolean onTouch(View v, MotionEvent event) {
                        // TODO Auto-generated method stub
                        return false;
                    }
                });
            }
        });

例如,这不应该如何应用。感谢您阅读本文的时间。

2 个答案:

答案 0 :(得分:0)

首先在setOnClickListener之外使用setOnTouchListener。

其次,使用setTag()方法为每个imageview分配一个唯一标记,并使用image.getTag()获取标记,一旦获得具有唯一标记的图像,就可以在特定的imageview上设置OnTouchListener

答案 1 :(得分:0)

两件事。

  1. 您需要将视图添加到屏幕上的ViewGroup之一。例如,如果你有一个包含所有视图的FrameLayout,你可以这样做:

    ImageView imageView = new ImageView(this);
    FrameLayout frameLayout = (FrameLayout) findViewByid(R.id.container);
    frameLayout.addView(imageView);
    
  2. 由于您是在匿名内部类中创建ImageView,因此this关键字引用匿名内部类,而不是活动。您需要使用您的活动名称限定this关键字,例如

    ImageView imageView = new ImageView(MyActivity.this);