Android: 打开的溢出菜单在横屏旋转后没有对齐
Android: Opened overflow menu is not aligned right after landscape screen rotation
基本上,当我打开溢出菜单并旋转屏幕时,菜单会位于屏幕中间(因为它位于纵向屏幕的右端)。
我使用通常的方法来扩充菜单:
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.my_menu, menu);
}
唯一需要注意的是我隐藏了工具栏和状态栏,所以才会出现这个问题。如果不隐藏工具栏,它可以正常工作。
activity.getSupportActionBar().hide()
activity.getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE);
setFooterVisible(false);
所以我注意到,如果工具栏和状态栏未隐藏,菜单的行为是正确的,我只是观察菜单 open/close 并且仅当溢出菜单关闭时才隐藏工具栏和状态栏。然后菜单按预期放置。
基本上,当我打开溢出菜单并旋转屏幕时,菜单会位于屏幕中间(因为它位于纵向屏幕的右端)。
我使用通常的方法来扩充菜单:
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.my_menu, menu);
}
唯一需要注意的是我隐藏了工具栏和状态栏,所以才会出现这个问题。如果不隐藏工具栏,它可以正常工作。
activity.getSupportActionBar().hide()
activity.getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE);
setFooterVisible(false);
所以我注意到,如果工具栏和状态栏未隐藏,菜单的行为是正确的,我只是观察菜单 open/close 并且仅当溢出菜单关闭时才隐藏工具栏和状态栏。然后菜单按预期放置。