OnLongClickListener 不工作
Posted
技术标签:
【中文标题】OnLongClickListener 不工作【英文标题】:OnLongClickListener not working 【发布时间】: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,两者都可以正常工作 【参考方案1】:您需要通过代码启用长点击:
imageView.setLongClickable(true);
imageView.setClickable(true);
最后一行可能不是必需的,但也没有问题。
【讨论】:
按照他的要求,只要setLongClickable()
就够了。
是否可以在模拟器中测试longclick?我按鼠标长按没有任何反应。
我刚刚在适合我的模拟器中使用 longclick 启动了一个项目。
我使用了 imageView.setLongClickable(true);更多。但是吐司也不会出现。【参考方案2】:
setLongClickable不需要在代码中做,最好在XML中定义
android:longClickable="true"
【讨论】:
XML 中的 UI 内容大多总是更好 +1以上是关于OnLongClickListener 不工作的主要内容,如果未能解决你的问题,请参考以下文章
我可以在运行时在 onClickListener 和 onLongClickListener 之间切换吗?
在 listview Android 1.6 中同时使用 onClickListener 和 onLongClickListener
Android OnLongClickListener 未在 MapView 上触发
OnLongClickListener 锁定/解锁切换按钮操作