情况:在我的应用程序中(minSDK:14)我有一个自定义的ActionBar
。在我的customView
中,我有一个EditText
和一些Buttons
。
ActionBar
本身包含标签,可用于在Fragments
托管的ViewPager
之间导航。 customView
位于标签上方。我有2种可能的设置方案(取决于应用程序的设置):
1)。标签使用图标,在这种情况下,定义为“sMain
”的主题应用于Activity
2)。标签使用文字,Theme.Holo
应用于Activity
将屏幕旋转为横向时的问题:
方案#1:整个ActionBar
变为1行。标签区域现在占据整个屏幕宽度,我的customView
只是位于右侧并与标签重叠。这种行为完全搞砸了我的用户界面。
方案#2: ActionBar
也变为1行,但现在标签被“堆叠”为左侧的下拉菜单和{{1}占据屏幕宽度的其余部分。这也搞砸了我的用户界面,因为:
- Holo Theme的背景设计与customView
的设计不同,而customView
并不是设计在标签菜单旁边
-Tabs现在由文本表示,可以更长或更短,每当更改选项卡时,我的customView的宽度都会更改(因此文本将成为所需的空间)
问题:可以强制ActionBar
始终为2行,所以我的customView有空间吗?如果没有,还有其他任何解决方案吗?
如果重要,下面是我的ActionBar的设置和相应的主题:
actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayShowHomeEnabled(true);
actionBar.setDisplayUseLogoEnabled(false);
actionBar.setIcon(new ColorDrawable(Color.TRANSPARENT));
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setCustomView(R.layout.action_bar_main);
// working with customView's subviews
样式:
<style name="sMain" parent="@android:style/Theme.Holo">
<item name="android:actionBarStyle">@style/mTabAreaBackground</item>
<item name="android:actionBarTabStyle">@style/ActionBarTabStyle</item>
</style>
<style name="sGunView" parent="@android:style/Theme.Holo">
<item name="android:windowBackground">@android:color/black</item>
<item name="android:actionBarStyle">@style/mTabAreaBackground</item>
<item name="android:actionBarTabStyle">@style/ActionBarTabStyle</item>
</style>
<style name="mTabAreaBackground" parent="@android:style/Widget.Holo.ActionBar.Solid">
<item name="android:backgroundStacked">#0d0d0d</item>
</style>
<style name="ActionBarTabStyle" parent="@android:style/Widget.Holo.ActionBar.TabView">
<item name="android:background">@android:color/transparent</item>
<item name="android:paddingLeft">0dp</item>
<item name="android:paddingRight">0dp</item>
</style>