自定义ActionBar在屏幕旋转时的行为

时间:2013-11-06 12:32:11

标签: android android-actionbar

情况:在我的应用程序中(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>

0 个答案:

没有答案