Android 自定义操作栏';屏幕旋转时的行为
情景:在我的应用程序(minSDK:14)中,我有一个自定义的Android 自定义操作栏';屏幕旋转时的行为,android,android-actionbar,Android,Android Actionbar,情景:在我的应用程序(minSDK:14)中,我有一个自定义的操作栏。在我的customViewa中,有一个EditText和一些按钮 ActionBar本身具有选项卡,用于在ViewPager托管的片段之间导航。customView位于选项卡上方。我有两种可能的设置方案(取决于应用程序的设置): 1) 。选项卡使用图标,在这种情况下,定义为“sMain”的主题将应用于活动 2) 。选项卡使用文本,主题.Holo应用于活动 屏幕旋转到横向时出现的问题: 场景#1:整个ActionBar变为单线。
操作栏
。在我的customView
a中,有一个EditText
和一些按钮
ActionBar
本身具有选项卡,用于在ViewPager
托管的片段之间导航。customView
位于选项卡上方。我有两种可能的设置方案(取决于应用程序的设置):
1) 。选项卡使用图标,在这种情况下,定义为“sMain
”的主题将应用于活动
2) 。选项卡使用文本,主题.Holo
应用于活动
屏幕旋转到横向时出现的问题:
场景#1:整个ActionBar
变为单线。Tab area现在占据整个屏幕宽度,mycustomView
位于右侧并与选项卡重叠。这种行为完全弄乱了我的UI
场景#2:操作栏
也变为单线,但现在选项卡作为下拉菜单“堆叠”在左侧,而自定义视图
占据了屏幕的其余宽度。这也会弄乱我的UI,因为:
-Holo主题的选项卡背景与mycustomView
的设计不同,mycustomView的设计不在选项卡菜单旁边
-选项卡现在由文本表示,文本可以长也可以短,并且每当更改选项卡时,my customView的宽度都会更改(因此文本将成为它所需的房间)
问题:是否可以强制ActionBar
始终为两行,这样我的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>
@风格/背景
@风格/动作风格
@android:彩色/黑色
@风格/背景
@风格/动作风格
#0d0d
@android:彩色/透明
0dp
0dp
以防万一有人在寻找答案:我这里有一个解决方案