【问题标题】:OnLongClickListener not workingOnLongClickListener 不工作
【发布时间】:2013-06-21 19:05:06
【问题描述】:

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

代码:

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


 });

【问题讨论】:

  • 一次 View.OnLongClickListener 将其替换为 OnLongClickListener 并尝试。
  • @Harish:我试过了。是否可以对同一个 imageView 使用 OnTouchListener、OnLongClickListener?
  • 使用 OnClickListener 代替 OnTouchListener。
  • 终于搞定了..对 OnTouchListener 使用 return false,两者都可以正常工作

标签: android android-imageview onlongclicklistener


【解决方案1】:

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

imageView.setLongClickable(true);
imageView.setClickable(true);

最后一行可能不是必需的,但也没有问题。

【讨论】:

  • 按照他的要求,只要setLongClickable()就够了。
  • 是否可以在模拟器中测试longclick?我按鼠标长按没有任何反应。
  • 我刚刚在适合我的模拟器中使用 longclick 启动了一个项目。
  • 我使用了 imageView.setLongClickable(true);更多。但是吐司也不会出现。
【解决方案2】:

setLongClickable不需要在代码中做,最好在XML中定义

 android:longClickable="true"

【讨论】:

  • XML 中的 UI 内容大多总是更好 +1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-13
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多