配置更改期间强制操作栏重新布局

时间:2012-10-15 15:57:46

标签: android layout android-actionbar

我有在配置更改期间未重新创建的活动。在我的操作栏中,我有许多“ifroom”按钮。在纵向模式下创建活动时,其中有一些显示在操作栏中。在onConfigurationChanged()中,我呼叫getActivity().invalidateOptionsMenu(),但重新开始后,屏幕方向与之前的屏幕方向相同。那么在这种情况下如何强制动作条重新布局呢?

1 个答案:

答案 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