我有在配置更改期间未重新创建的活动。在我的操作栏中,我有许多“ifroom”按钮。在纵向模式下创建活动时,其中有一些显示在操作栏中。在onConfigurationChanged()
中,我呼叫getActivity().invalidateOptionsMenu()
,但重新开始后,屏幕方向与之前的屏幕方向相同。那么在这种情况下如何强制动作条重新布局呢?
答案 0 :(得分:0)
在你的res文件夹中创建一个内部值文件夹,一个名为bools的新xml如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="nomal_layout">true</bool>
<bool name="nomal_layout_land">false</bool>
<bool name="large_layout">false</bool>
<bool name="large_layout_land">false</bool>
</resources>
上面的示例是针对普通的纵向布局(true),根据您要自定义的布局创建更多值为bools.xml的值文件夹,例如values-large-land(或使用新的存储桶http://android-developers.blogspot.com.br/2011/07/new-tools-for-managing-screen-sizes.html )。然后在onCreateOptionsMenu上检查布局并强制(SHOW_AS_ACTION_ALWAYS)你要显示的itens:
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.????, menu);//the menu to inflate
MenuItem myMenuItem = menu.findItem(R.id.????);//the item you want to show in the specified layout
if (getResources().getBoolean(R.bool.large_layout_land)){
myMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS)
}else{
}
这仅适用于Android&gt; = 11