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

标签 android listview android-menu popupmenu

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

创建弹出式菜单,我尝试了以下方法

1 ] 使用 Popup menu 和下面的代码:

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

它给出了这个输出:

enter image description here

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

我们可以在 ContextMenu 中保持宽度和高度 但它总是显示在中心 不是我们 Listview 数据的每一行

enter image description here

但我想要在Image type Popup menu 下方宽度和高度较小

enter image description here

请提供解决方案。

最佳答案

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

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

和put方法

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是创建constructor adapter时必须绑定(bind)的Activity,例子:

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/

相关文章:

android - 如何在 cordova 中设置通知 PushPlugin?

android - 这是一个标准的android组件吗?

android - 如何在 Android 的 Fragment 中使用 setUserVisibleHint

android - ListView 中的微调器

android - android中的ListView分页

android - 所有 api 的 MenuItem 色调 - api > 26 的 iconTint -

Android Studio Gradle proguard - 只混淆实际的应用程序代码而不是第三方库

android - 更新数据库后更新listView?

android - android 中 getRealMetrics 获取屏幕原始尺寸的替代方法是什么

android - ActionBar 显示所有操作或不显示任何操作,将所有操作放入溢出菜单中