使用ABS ViewPager和自定义ActionBar视图

时间:2012-08-31 17:14:28

标签: android actionbarsherlock

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

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

enter image description here

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

enter image description here

这有什么特别的原因吗?我可以做些什么来使用自定义操作栏视图,但仍然使用选项卡上方的操作栏进行布局?本例中使用的所有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 );

1 个答案:

答案 0 :(得分:3)

Murphy定律在你将它发布到Stack Overflow之后立即绊倒你自己问题的答案。

ActionBar.DISPLAY_SHOW_HOME添加到ab.setDisplayOptions()会导致ActionBar返回到屏幕顶部。

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