ImageView点击不点击第二次点击---第2部分

时间:2014-05-14 05:04:44

标签: android actionbarsherlock contextmenu

我发布了this yeaterday。你可以看到问题是我正在尝试显示上下文菜单并使用相同的按钮将其关闭。之前的问题是,当我点击按钮时菜单正在显示,但之后它没有关闭。我的朋友在这里建议改变:mPopupMenu.setModal(false);之前是true。现在菜单显示并完全取消按钮点击。但新问题是onItemClick菜单现在不能正常工作。很多但是找不到解决方案。这就是代码:

mPopupMenu = new IcsListPopupWindow(this);
        mAdapter = new PopupMenuAdapter(this, R.layout.popmenu_row/*android.R.layout.simple_list_item_1*/, poparray);
        mPopupMenu.setAdapter(mAdapter);
        mPopupMenu.setModal(false);
        mPopupMenu.setOnItemClickListener(ContactsActivity.this);
         // only if you need it

        menuicon.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {


            if(f==1){
                f=0;
                mPopupMenu.setModal(true);
                mPopupMenu.setContentWidth(ContactsActivity.this.getWindowManager().getDefaultDisplay().getWidth() / 2);
                mAdapter.notifyDataSetChanged(); // if you change anything
                mPopupMenu.setAnchorView(menuicon);
                mPopupMenu.show();




            }
            else{
        //  mPopupMenu.setModal(false);
                mPopupMenu.dismiss();   
                f=1;


            }



            }
        });

我在操作栏中显示按钮menuicon。我正在使用actionbarsherlock library.

1 个答案:

答案 0 :(得分:0)

您正尝试使用按钮单击切换mPopupMenu视图。如果我是正确的,请尝试以下代码。

menuicon.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
              if(mPopupMenu != null){
                if(mPopupMenu.isShowing()){
                  mPopupMenu.dismiss();   
                }else{
                  mPopupMenu.setModal(true);
                  mPopupMenu.setContentWidth(ContactsActivity.this.getWindowManager().getDefaultDisplay().getWidth() / 2);
                  mAdapter.notifyDataSetChanged(); // if you change anything
                 mPopupMenu.setAnchorView(menuicon);
                 mPopupMenu.show();
               }
              }
            }
        });