我正在开发一个需要与 Android 2.2+ 兼容的应用程序,它使用 ActionBarSherlock 在 ICS 之前的设备上自定义 ActionBar。
我只在 2.2 和 2.3 设备上遇到问题,即使内容适合设备屏幕,也会导致 ActionBar 的内容溢出。像这样的东西:
我已经(在模拟器上)测试了运行 Android 4.0 的设备屏幕尺寸(320x480 上的 mdpi),它工作正常,所以我相信这个问题与 ActionBarSherlock 有关。
我也尝试过大幅减少我的图标文件,但即使图像更小,内容仍然溢出。
这是我的styles.xml 文件:
<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">
</style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="actionBarStyle">@style/AppBaseTheme.ActionBarStyle</item>
<item name="actionBarTabStyle">@style/AppBaseTheme.ActionBarTabStyle</item>
<item name="actionBarTabBarStyle">@style/AppBaseTheme.ActionBarTabBarStyle</item>
</style>
<style name="AppBaseTheme.ActionBarStyle" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
<item name="background">@drawable/action_bar_background</item>
<item name="android:background">@drawable/action_bar_background</item>
</style>
<style name="AppBaseTheme.ActionBarTabStyle" parent="Widget.Sherlock.Light.ActionBar.TabView.Inverse">
<item name="background">@android:color/transparent</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:paddingLeft">0dip</item>
<item name="android:paddingRight">0dip</item>
</style>
<style name="AppBaseTheme.ActionBarTabBarStyle" parent="Widget.Sherlock.Light.ActionBar.TabBar.Inverse">
<item name="background">@drawable/action_bar_tab_divider</item>
<item name="android:background">@drawable/action_bar_tab_divider</item>
<item name="divider">@drawable/sp</item>
<item name="android:divider">@drawable/sp</item>
</style>
文件@drawable/action_bar_background 是320px 宽,@drawable/action_bar_tab_divider 和@drawable/sp 都是1px 宽。
这是在我的主要活动中创建选项卡的代码:
ActionBar actionBar = super.getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
this.createTab(actionBar, R.drawable.action_bar_tab_home_off);
this.createTab(actionBar, R.drawable.action_bar_tab_news_off);
this.createTab(actionBar, R.drawable.action_bar_tab_videos_off);
this.createTab(actionBar, R.drawable.action_bar_tab_guide_off);
private void createTab(ActionBar actionBar, int resource) {
Tab t = actionBar.newTab();
t.setTabListener(this);
t.setIcon(resource);
actionBar.addTab(t);
}
有任何想法吗?