我有一个应用程序,它使用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 );
答案 0 :(得分:3)
Murphy定律在你将它发布到Stack Overflow之后立即绊倒你自己问题的答案。
将ActionBar.DISPLAY_SHOW_HOME
添加到ab.setDisplayOptions()
会导致ActionBar返回到屏幕顶部。
对于这个特定的项目来说,这是一个可以接受的解决方案(因为我可能希望无论如何都有Home图标),但我仍然很想知道是否有任何其他方法可以为那些人 - 由于某种原因 - 不希望显示主页图标。