ActionBarSherlockを使用して、タブナビゲーション用のViewPagerコントロールと、標準のActionBarを提供するアプリがあります。カスタムActionBarビューを使用すると、アクションバーの位置がタブコントロールの下に移動することを除いて、すべてが正常に機能しています。
標準のActionBarを使用する場合(つまり、カスタムビューがない場合)、すべてが期待どおりに機能します。
ただし、カスタムビューを使用するようにActionBarを切り替えると(他のコードはまったく変更されません)、アクションバーはタブコントロールの下に切り替わります。
これには特別な理由がありますか?カスタムアクションバービューを使用するためにできることはありますが、それでもタブの上にアクションバーが配置されていますか?この例で使用されているすべてのXMLレイアウトは、以下のコードに示されているように、非常に必要最低限のものです。
私はActionBarSherlock4.1.0を使用しています(この記事の執筆時点では、最新の安定版リリースです)。この動作は、Android 2.2(私がサポートしている最も古いバージョン)とAndroid4.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 );