Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 短按显示关联菜单而不是长按_Java_Android_Eclipse_Contextmenu_Imageview - Fatal编程技术网

Java 短按显示关联菜单而不是长按

Java 短按显示关联菜单而不是长按,java,android,eclipse,contextmenu,imageview,Java,Android,Eclipse,Contextmenu,Imageview,我有一个上下文菜单的问题,我有一个控制“ImageButton”当你长按显示上下文菜单 我需要用短点击来显示上下文菜单,而不是长点击,这可能吗 这是我目前使用的代码,菜单工作得很好 private ImageView btnRutas; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); reques

我有一个上下文菜单的问题,我有一个控制“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();

        }

    }

提前感谢。

我能想到的唯一方法是使用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);
 }
}

我想你应该使用你想要应用的任何视图,而不是专门为此创建一个新视图。我希望这就是您想要的,并且这会有所帮助。

如果不在代码中添加任何OnClickListener,您只能在xml中执行此操作。只需转到ImageView并添加:

android:onClick="openContextMenu"
这里有一个例子

            <ImageView
            android:id="@+id/btnRutas"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="openContextMenu" />

我认为你应该使用弹出式菜单而不是上下文菜单。检查文档,或按以下方式执行:

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

在单击按钮的监听器中调用此方法并传递按钮。

万岁!幸运编码:0)