这个问题的解决方法是在弹出菜单显示之前获取屏幕高度,然后使用该高度来设置弹出菜单的垂直偏移量,以确保菜单不会被导航栏遮挡。
代码示例:
// 获取屏幕高度
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int screenHeight = displayMetrics.heightPixels;
// 在打开 PopupMenu 之前设置垂直偏移量
PopupMenu popupMenu = new PopupMenu(context, anchorView, gravity);
popupMenu.getMenuInflater().inflate(menuRes, popupMenu.getMenu());
int verticalOffset = screenHeight - anchorView.getBottom();
popupMenu.setGravity(Gravity.TOP);
popupMenu.setMargin(0, verticalOffset);
popupMenu.show();
请注意,上述代码中的 anchorView
可以是任何在屏幕上显示的视图,例如按钮或文本视图。 在这个例子中,我们假设 anchorView
是菜单按钮。
此外,请确保你在调用此代码之前确保你的 anchorView
是正确对齐的,否则可能会出现一些意外的行为。