Android下拉设置菜单

时间:2017-08-28 19:56:54

标签: java android popupmenu

我尝试自定义设置菜单或创建具有该功能的内容。我目前有一个带有标题的工具栏和一个设置按钮(带有自定义图标)。这个按钮以这种方式打开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();


    }
});

弹出菜单正常工作,但我现在需要自定义视图,至少要使其全宽并使文本居中,如图所示:

dropdown menu

是否可以使用弹出菜单执行此操作?如何扩展菜单的宽度并使其达到全宽?

提前致谢。

2 个答案:

答案 0 :(得分:1)

而是使用弹出菜单使其全宽并使文本居中。我不认为这很容易。

为什么不使用Bottom Sheets

有很多开源库可供使用。请使用它。

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