所以最后我找到了解决方案。 当您想将弹出菜单锚定到ActionBar中的ActionItem时,需要找到呈现ActionItem的视图。使用findViewById()的简单查找视图,其中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;
}
菜单:
....
android:id="@+id/menu_overflow"
android:icon="@drawable/ic_overflow"
android:showAsAction="ifRoom"
android:title="@string/menu_overflow"/>
....
如果菜单项不可见(溢出),则它不起作用。 findViewById返回null,因此您必须检查这种情况并定位到另一个视图。