Android 下拉设置菜单

Android Dropdown Settings Menu

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


    }
});

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

是否可以使用弹出菜单来做到这一点?如何扩展菜单的宽度并使其全宽?

提前致谢。

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

你为什么不使用 Bottom Sheets

有很多开源库available.Make使用它。

您可以为此使用 ListPopUpWindow。优点是您可以自定义其中的布局以放置带有图像的字符串列表等。尝试使用此代码。

ListPopupWindow listPopupWindow;
setUpListpopupWindow();
btnOpenMenu.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        listPopupWindow.show();
    } 
});

在此处设置您的列表弹出窗口window。

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