java - Android 下拉设置菜单

标签 java android 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();


    }
});

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

dropdown menu

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

提前致谢。

最佳答案

您可以使用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);
}

关于java - Android 下拉设置菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45926460/

相关文章:

java - gradle 存储库指向具有多个库的本地目录

java - 在java中安排一个事件每秒发生10次

java - 使用构造函数创建基于参数化父类(super class)的生成器

java - JMenuItem 的 ActionListener 不起作用

java - scala 与 Java 不匹配和推断类型参数

android - 我收到此错误 : Warning:Gradle version 2. 需要 10

android - java.lang.UnsatisfiedLinkError : com. android.tools.fd.runtime.IncrementalClassLoader

java - 将标签添加到 ClickableSpan

SWT:单击后在工具栏按钮下方显示弹出菜单

delphi - 如何让多级 PopupMenu 中的所有项目充当一个单选组?