gpt4 book ai didi

android - 在 `ActionBar` 项目单击时显示弹出菜单

转载 作者:IT王子 更新时间:2023-10-28 23:47:01 25 4
gpt4 key购买 nike

我有一个 ActionBar 上面有一个操作项。单击操作项后,我想显示一个弹出菜单。我实现了这个方法,但我想将它锚定到操作项或 ActionBar,而不是布局中的任何 View 。如何从 MenuItem 获得某种 View 来锚定它?

public boolean onOptionsItemSelected(MenuItem item) {
PopupMenu popupMenu = new PopupMenu(this, ??????); // What view goes here?
popupMenu.inflate(R.menu.counters_overflow);
popupMenu.show();
// ...
return true;
}

最佳答案

所以我终于找到了解决方案。当您想将弹出菜单锚定到 ActionBar 中的 ActionItem 时,您需要找到呈现 ActionItem 的 View 。使用 findViewById() 的简单查找 View ,其中 id 与 xml 中菜单项的 id 相同。

显示弹出窗口:

public boolean onOptionsItemSelected(MenuItem item) {
// ...

View menuItemView = findViewById(R.id.menu_overflow); // SAME ID AS MENU ID
PopupMenu popupMenu = new PopupMenu(this, menuItemView);
popupMenu.inflate(R.menu.counters_overflow);
// ...
popupMenu.show();
// ...
return true;
}

菜单:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

....

<item
android:id="@+id/menu_overflow"
android:icon="@drawable/ic_overflow"
android:showAsAction="ifRoom"
android:title="@string/menu_overflow"/>

....

</menu>

如果菜单项不可见(溢出),则它不起作用。 findViewById 返回 null,因此您必须检查这种情况并锚定到另一个 View 。

关于android - 在 `ActionBar` 项目单击时显示弹出菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14729592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com