我有一个使用 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 );