首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OnLongClickListener不工作

OnLongClickListener不工作
EN

Stack Overflow用户
提问于 2013-06-25 13:16:27
回答 2查看 13.7K关注 0票数 5

我有一台ImageView。我需要为ImageView使用onLongClickListener。当我使用此代码时,什么也不会发生。

代码:

代码语言:javascript
运行
复制
 gallery=(Gallery)findViewById(R.id.gall1);

 gallery.setAdapter(new ImageAdapter(MainActivity.this));

            gallery.setOnItemClickListener(new OnItemClickListener()
            {

                @Override
                public void onItemClick(
                        AdapterView<?> parent, View v,
                        int position, long id) {
                    // TODO Auto-generated method stub

                    final ImageView imageView = (ImageView) findViewById(R.id.image1);
                    imageView.setImageResource(imageIDs[position]);

                    imageView.setLongClickable(true);


     imageView.setOnLongClickListener(new View.OnLongClickListener(){

        @Override
        public boolean onLongClick(View v) {
            // TODO Auto-generated method stub

                            Toast.makeText(getApplicationContext(), "Long Press work", Toast.LENGTH_SHORT).show();

        return true;
            }

      });


  imageView.setOnTouchListener(new View.OnTouchListener() {

    @Override
    public boolean onTouch(View v,MotionEvent event) {
    // TODO Auto-generated method stub
    layoutParams = (RelativeLayout.LayoutParams) imageView.getLayoutParams();

        switch(event.getAction())
             {
   case MotionEvent.ACTION_DOWN :
      {
   parms = (RelativeLayout.LayoutParams) imageView.getLayoutParams();

            dx = event.getRawX() - parms.leftMargin;
    dy = event.getRawY() - parms.topMargin;
     }
 break;
  case MotionEvent.ACTION_MOVE :
{   
 x = event.getRawX();
 y = event.getRawY();
  parms.leftMargin = (int) (x-dx);
 parms.topMargin = (int) (y - dy);
                                    imageView.setLayoutParams(parms);
     }
 break;
 case MotionEvent.ACTION_UP :
 {

     }
   break;
 }

  return true;
    }
});
    }


 });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-25 13:19:44

您需要通过代码启用长点击:

代码语言:javascript
运行
复制
imageView.setLongClickable(true);
imageView.setClickable(true);

最后一行可能不是必需的,但也不会造成任何麻烦。

票数 20
EN

Stack Overflow用户

发布于 2013-06-25 13:29:05

不需要在代码中执行setLongClickable,最好在XML中定义它。

代码语言:javascript
运行
复制
 android:longClickable="true"
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17289627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档