我的上下文菜单有问题,当你长按一下显示上下文菜单时,我有一个控件“ImageButton”。
我需要通过短暂的点击显示上下文菜单,而不是长按,这可能吗?
这是我目前使用的代码,菜单运行正常。
private ImageView btnRutas;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.fclientes);
btnRutas =(ImageView)findViewById(R.id.btnRutas);
btnRutas.setOnClickListener(this);
registerForContextMenu(btnRutas);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
if(v.getId()== R.id.btnRutas) {
menu.setHeaderIcon(android.R.drawable.ic_menu_more);
menu.setHeaderTitle("Rutas");
menu.add(0, 0, 0, "Ruta 1");
}
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()){
case 0:
function();
}
}
提前致谢。
答案 0 :(得分:13)
我能想到的唯一方法是使用onClickListener()作为活动的一部分:
public class MyActivity extends Activity implements OnClickListener{
protected void onCreate(Bundle bundle) {
//Usual Activity Stuff
View v = (View)findViewById(R.id.view);
v.setOnClickListener(this);
}
public void onClick(View v) {
super.onClick(v);
this.openContextMenu(v);
}
}
我没有专门为此创建一个新的View,我猜你会使用你想要的任何View来应用。我希望这就是你想要的,这会有所帮助。
答案 1 :(得分:0)
在代码中不添加任何OnClickListener,只能在xml中执行。只需转到ImageView并添加:
android:onClick="openContextMenu"
这是一个例子。
<ImageView
android:id="@+id/btnRutas"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="openContextMenu" />
答案 2 :(得分:0)
我认为您应该使用弹出菜单而不是上下文菜单。检查文档https://developer.android.com/guide/topics/ui/menus,或这样做:
private void showMenu(View v){
PopupMenu popup = new PopupMenu(context, v);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.your_menu, popup.getMenu());
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_item1:
//your code
return true;
case R.id.menu_item2:
//your code
return true;
case R.id.menu_item3:
//your code
return true;
default:
return false;
}
}
});
popup.show();
}
在按钮的onClickListener中调用此方法并传递按钮。