2

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 );
4

1 に答える 1

3

Stack Overflowに投稿した直後に、自分の質問に対する答えに出くわすマーフィーの法則が再びストライキを起こします。

に追加ActionBar.DISPLAY_SHOW_HOMEするab.setDisplayOptions()と、アクションバーが画面の上部に戻ります。

これは、この特定のプロジェクトでは許容できる解決策です(おそらく、ホームアイコンをそこに配置したいので)が、何らかの理由でこれを達成する他の方法があるかどうかを知りたいと思います。ホームアイコンを表示したくない。

于 2012-08-31T17:31:12.287 に答える