如何将我的应用设置为在长按监听器上显示上下文菜单? 当我点击播放声音时,我想要它,并且长按一下同时显示带有一些选项和按钮的菜单。 所以我想要正常点击播放声音,长按一下显示菜单,其中包含一些按钮,我可以将其设置为铃声和其他内容。
mp=MediaPlayer.create(this, R.raw.hekler);
ImageButton btn1 = (ImageButton) findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mp2.isPlaying()){
mp2.pause();
mp2.seekTo(0);
}
else{
mp.start();
}
}
});
btn1.setOnLongClickListener(new OnLongClickListener() {
public boolean onLongClick(View arg0) {
return true;
}
});
答案 0 :(得分:2)
要在长按下显示上下文菜单,您应该为单击的视图调用registerForContextMenu(View)
。
您还应该覆盖onCreateContextMenu(ContextMenu, View, ContextMenu.ContextMenuInfo)
您不需要setOnLongClickListener
。如果由于其他原因需要它,它应该返回false。
在您的代码中:
ImageButton btn1 = (ImageButton) findViewById(R.id.btn1);
registerForContextMenu(btn1);
btn1.setOnClickListener(new View.OnClickListener() {
-------------
-------------
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.your_context_menu, menu);
}
处理上下文菜单:
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.contextItem1:
//Do what you want
return true;
case R.id.contextItem2:
//Do what you want
return true;
default:
return super.onContextItemSelected(item);
}
}