我正在使用支持库。在操作栏中,我有一个巨大的徽标(宽度= 320),searchView和一些菜单项(如收藏夹等)。 此外,我的活动使用onConfigurationChanged。
问题如下: 旋转设备后,ActionMenuView不会重新计算其宽度。它使用与之前方向相同的空间。
因此,如果我在protrait模式下启动活动,并且ActionMenuView的宽度为250px,它在横向模式下也将占据250px的宽度。
如果我在横向模式下开始活动而ActionMenuView的宽度为450px,那么它在纵向模式下也将占据450px宽度!
这里有3个问题,与此问题有关。
我如何向ActionMenuView解释它应该在旋转后重新计算其有限的宽度?
感谢您的帮助!
答案 0 :(得分:0)
我通过以下方法找到了我的问题的答案:
在OnConfigurationChanged方法中,按以下方式重新创建菜单
ActionMenuPresenter presenter = new ActionMenuPresenter(getActivity());
MenuBuilder menuBuilder = new MenuBuilder(getActivity());
menuBuilder.setCallback(new Callback() {
@Override
public void onMenuModeChange(MenuBuilder arg0) {
}
@Override
public boolean onMenuItemSelected(MenuBuilder arg0, MenuItem arg1) {
onOptionsItemSelected(arg1);
return false;
}
});
toolbar.setMenu(menuBuilder, presenter);
但是,当我们使用自定义Menu对象时 - 它会丢失样式。我使用AppCompat.Dark.NoActionBar主题,但在旋转设备并重新创建菜单后,我的溢出菜单按钮和搜索小部件文本变为黑色(而不是白色)。
我通过在xml文件中自定义搜索小部件来修复它,其中白色图标用于搜索和清除,以编程方式将textColor + hintTextColor设置为白色,并为我的溢出菜单按钮声明以下样式:
<style name="Base.Widget.AppCompat.ActionButton.Overflow">
<item name="android:tint">#FFF</item>
</style>