PopupMenu 的自定义布局

发布于 2025-01-13 22:08:08 字数 1685 浏览 2 评论 0原文

我是 Android 新手,尝试为 android.widget.PopupMenu 创建自定义布局 我搜索但找不到有效的解决方案。

我想要

在此处输入图像描述

我想要左侧绿线,底部菜单项分隔线。 这是 PopupMenu 项目的自定义布局

我只需要使用 android.widget.PopupMenu 。 我尝试过这个,但没有用。

//app/src/main/res/layout/menu_item_more.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFAAAA">
</LinearLayout>

//app/src/main/res/menu/more_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/menu_item_notification_news"
        app:actionLayout="@layout/menu_item_more"
        android:title="알림/소식" />
    <item
        android:id="@+id/menu_item_employment_info"
        android:title="취업정보" />
    <item
        android:id="@+id/menu_item_public_relation"
        android:title="시정홍보" />
    <item
        android:id="@+id/menu_item_preferences"
        android:title="환경설정" />
</menu>

在Activity中

var moreMenu: View = findViewById(R.id.more_menu)
popupMenu = PopupMenu(this, moreMenu)
popupMenu.menuInflater.inflate(R.menu.more_menu, popupMenu.menu)
popupMenu.setOnMenuItemClickListener(this)
popupMenu.show()

I am new to Android, trying to crate a custom layout for android.widget.PopupMenu
I searched but could not find a working solution.

I want

enter image description here

I want left side green line, bottom menu items separating line.
That is a customised layout for PopupMenu items

I need to use android.widget.PopupMenu only.
I tried this, but not working.

In //app/src/main/res/layout/menu_item_more.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFAAAA">
</LinearLayout>

In //app/src/main/res/menu/more_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/menu_item_notification_news"
        app:actionLayout="@layout/menu_item_more"
        android:title="알림/소식" />
    <item
        android:id="@+id/menu_item_employment_info"
        android:title="취업정보" />
    <item
        android:id="@+id/menu_item_public_relation"
        android:title="시정홍보" />
    <item
        android:id="@+id/menu_item_preferences"
        android:title="환경설정" />
</menu>

In Activity

var moreMenu: View = findViewById(R.id.more_menu)
popupMenu = PopupMenu(this, moreMenu)
popupMenu.menuInflater.inflate(R.menu.more_menu, popupMenu.menu)
popupMenu.setOnMenuItemClickListener(this)
popupMenu.show()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟织青萝梦 2025-01-20 22:08:08

您是否尝试过创建自己的从 PopupMenu 扩展的组件并重写以下方法?该方法负责返回列表布局。

public ListView getMenuListView() {
        if (!mPopup.isShowing()) {
            return null;
        }
        return mPopup.getPopup().getListView();
    }

希望我有帮助!让我知道这是否有效! :)

Have you tried creating your own component extending from PopupMenu and overriding the following method? This method is the one responsible for returning the list layout.

public ListView getMenuListView() {
        if (!mPopup.isShowing()) {
            return null;
        }
        return mPopup.getPopup().getListView();
    }

Hope i helped! Let me know if that worked! :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文