2

我有一个使用 ActionBarSherlock 为选项卡导航提供 ViewPager 控件以及标准 ActionBar 的应用程序。一切正常,除了当我使用自定义 ActionBar 视图时,操作栏将其位置移动到选项卡控件下方。

当使用标准的 ActionBar(即没有自定义视图)时,一切都按预期工作:

在此处输入图像描述

但是,当我切换 ActionBar 以使用自定义视图(没有任何其他代码更改)时,操作栏切换到选项卡控件下方:

在此处输入图像描述

这有什么特别的原因吗?我可以做些什么来使用自定义操作栏视图,但仍然在选项卡上方放置操作栏?本示例中使用的所有 XML 布局都非常简单,如下面的代码所示。

我正在使用 ActionBarSherlock 4.1.0(在撰写本文时,最新的稳定版本)。此行为发生在 Android 2.2(我支持的最早版本)和 Android 4.1 上。

我的 ABS 初始化代码:

setContentView( R.layout.main ); // XML layout that currently contains only the ViewPager
mViewPager = (ViewPager) findViewById( R.id.viewPager );

// Set up action bar
ActionBar ab = getSupportActionBar();
Drawable gd = getResources().getDrawable( R.drawable.actionbar_bg ); // Background gradient
ab.setBackgroundDrawable( gd );
ab.setCustomView( R.layout.actionbar_custom ); // For this example, contains just a TextView
ab.setDisplayOptions( ActionBar.DISPLAY_SHOW_CUSTOM );

// Set up tabs
ab.setNavigationMode( ActionBar.NAVIGATION_MODE_TABS );
mTabsAdapter = new TabsAdapter( this, mViewPager );
mTabsAdapter.addTab( ab.newTab().setText( "Tab 1" ), Tab1Fragment.class, null );
mTabsAdapter.addTab( ab.newTab().setText( "Tab 2" ), Tab2Fragment.class, null );
mTabsAdapter.addTab( ab.newTab().setText( "Tab 3" ), Tab3Fragment.class, null );
4

1 回答 1

3

墨菲定律在您将自己的问题发布到 Stack Overflow 后立即发现问题的答案再次发生。

添加ActionBar.DISPLAY_SHOW_HOMEab.setDisplayOptions()将导致 ActionBar 返回到屏幕顶部。

对于这个特定项目来说,这是一个可以接受的解决方案(因为无论如何我可能都希望有 Home 图标),但我仍然很想知道是否有任何其他方法可以为那些出于某种原因会不喜欢显示主页图标。

于 2012-08-31T17:31:12.287 回答