我是 Android 新手,我正在创建 Listview 弹出菜单。但我遇到了 width
和 height
问题。弹出式菜单可以采用更多的高度和宽度。 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;
}
});
}
它给出了这个输出:
2 ] 使用 ContextMenu 它显示以下输出:
我们可以在 ContextMenu 中保持宽度和高度 但它总是显示在中心 不是我们 Listview 数据的每一行
。
但我想要在Image type Popup menu 下方
。 宽度和高度较小。
请提供解决方案。
最佳答案
如果你正在使用适配器,你可以在适配器中放入 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/