在弹出菜单中很奇怪

问题描述 投票:0回答:2

我在动作栏上创建了一个menu图标。单击它时,我希望它会显示这样的内容

enter image description here

但它显示在左侧。

enter image description here

这可能是什么问题?

 override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
        inflater!!.inflate(R.menu.fragment_menu, menu)
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
            val id = item.getItemId()
            if (id == R.id.more) {
                var popup: PopupMenu? = PopupMenu(context!!, view!!)
                popup?.menuInflater?.inflate(R.menu.pop_up_menu, popup.menu)
                popup?.show()

                popup?.setOnMenuItemClickListener({ item: MenuItem? ->
                    when (item!!.itemId) {
                        R.id.logOut -> {
                        }
                    }
                    true
                })
            } else
                super.onOptionsItemSelected(item)

            return true
        }

fragment_menu

<?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/more"
          android:title="menu"
          app:showAsAction="always"
          android:icon="@drawable/ic_more"/>
</menu>

弹出菜单

<?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/logOut"
            app:showAsAction="always"
            android:title="Log Out"
    />

</menu>

我传递的观点是这样的

@Nullable
    public View getView() {
        return this.mView;
    }
android kotlin popupmenu
2个回答
2
投票

你正在传递错误的view,正如@CodeRed所提到的那样。

更换

var popup: PopupMenu? = PopupMenu(context!!, view!!)

val vItem = getActivity().findViewById<View>(R.id.more)
var popup: PopupMenu? = PopupMenu(context!!, vItem)

0
投票

ActionBar中的菜单由系统自动填充,您无需编写代码来填充它。

要实现如图1所示的菜单,fragment_menu应该像:

<menu>
  <item android:title="Search" />
  <item android:title="Locate" />
  <item android:title="Refresh" />
  <item android:title="Help" />
  <item android:title="Check for update" />
</menu>

onOptionsItemSelected用于处理单击上面的菜单时,不用于显示菜单。

弹出菜单是自由位置菜单,如窗口中的右键菜单,而不是图1中的预期菜单。

© www.soinside.com 2019 - 2024. All rights reserved.