我尝试自定义设置菜单或创建具有该功能的内容。我目前有一个带有标题的工具栏和一个设置按钮(带有自定义图标)。这个按钮以这种方式打开PopupMenu:
btnOpenMenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
PopupMenu popupMenu = new PopupMenu(HomeActivity.this, view){
@Override
public void setOnMenuItemClickListener(@Nullable OnMenuItemClickListener listener) {
super.setOnMenuItemClickListener(listener);
}
};
popupMenu.inflate(R.menu.menu);
popupMenu.show();
}
});
弹出菜单正常工作,但我现在需要自定义视图,至少要使其全宽并使文本居中,如图所示:
是否可以使用弹出菜单执行此操作?如何扩展菜单的宽度并使其达到全宽?
提前致谢。
答案 0 :(得分:1)
答案 1 :(得分:1)
您可以使用ListPopUpWindow
。优点是你可以自定义里面的布局,也可以放置带有图像的字符串列表等。尝试使用这段代码。
ListPopupWindow listPopupWindow;
setUpListpopupWindow();
btnOpenMenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
listPopupWindow.show();
}
});
在此处设置列表弹出窗口。
public void setUpListpopupWindow() {
listPopupWindow = new ListPopupWindow(BluetoothActivity.this);
listPopupWindow.setAnchorView(btnOpenMenu);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
listPopupWindow.setWidth(metrics.widthPixels); //sets width as per the screen.
listPopupWindow.setHeight(ListPopupWindow.WRAP_CONTENT);
listPopupWindow.setModal(true);
View filterLayout = getLayoutInflater().inflate(R.layout.your_awesome_custom_layout, null);
listPopupWindow.setPromptView(filterLayout);
}