我是Android的新手,正在创建Listview弹出菜单。但是我遇到了widthheight问题。弹出菜单可以占用更多的高度和宽度。 SO中有很多问题,但是没有一个对我有帮助。

为了创建弹出菜单,我尝试了使用方法的

1] 使用弹出菜单和以下代码:

 private void showPopupMenu(View view){
        Context wrapper = new ContextThemeWrapper(this, R.style.PopupMenu);
        PopupMenu popupMenu = new PopupMenu(wrapper,view);

        popupMenu.getMenuInflater().inflate(R.menu.popup_menu,popupMenu.getMenu());
        popupMenu.show();

        popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener(){
            @Override
        public boolean onMenuItemClick(MenuItem item){
                switch (item.getItemId()){
                    case R.id.install:
                        Intent intent = new Intent(ViewAllRelationActivity.this,EditRelativeActivity.class);
                        startActivity(intent);
                        break;
                    case R.id.addtowishlist:
                        break;

                }
                return false;
            }
        });
    }

它给出了这个输出:

android - Android ListView中的弹出菜单问题-LMLPHP

2] 使用 ContextMenu 会显示以下输出:

我们可以在ContextMenu中维护的宽度和高度,但是总是显示在Center not each row of our Listview Data中。

android - Android ListView中的弹出菜单问题-LMLPHP

但是我想要below Image type Popup menu宽度和高度很小

android - Android ListView中的弹出菜单问题-LMLPHP

请为此提供解决方案。

最佳答案

如果使用适配器,则可以在适配器中放入getView(...)方法

    imvMore.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showPopupMenu(act,v);
        }
    });

放法
private void showPopupMenu(Activity act, View view){
    PopupMenu popupMenu = new PopupMenu(act,view);
    popupMenu.getMenuInflater().inflate(R.menu.menu_popup, popupMenu.getMenu());
    popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            switch (item.getItemId()) {

            }
            return true;
        }
    });
    popupMenu.show();
}

在您的适配器类中。

注意:act是Activity,在创建构造函数适配器时必须绑定(bind),例如:
public YourAdapter(Activity act, ArrayList<ItemOfYourModel> data){
    this.data = data;
    this.act = act;
}

在 Activity 中,您可以编写以下代码:
ArrayList<ItemOfYourModel> listData = new ArrayList<ItemOfYourModel>();
listData.add(new YourItemOfYourModel(...));
YourAdapter adapter = new YourAdapter(this,listData);

关于android - Android ListView中的弹出菜单问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35424746/

10-08 23:44