2012-08-31 59 views
2

我有一個應用程序使用ActionBarSherlock爲選項卡導航提供ViewPager控件,以及標準的ActionBar。一切工作正常,除了當我使用自定義ActionBar視圖時,操作欄將其位置移動到Tab控件下方。使用具有自定義ActionBar視圖的ABS ViewPager

當使用一個標準動作條(即沒有自定義視圖),一切都按預期工作:

enter image description here

然而,當我切換動作條使用自定義視圖(沒有其他的代碼更改無論如何),操作欄切換到標籤控件下面:

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

回答

3

墨菲定律磕磕絆絆到答案你自己的問題,你張貼堆棧溢出罷工再次之後的。

ActionBar.DISPLAY_SHOW_HOME添加到ab.setDisplayOptions()將導致ActionBar返回到屏幕的頂部。

對於這個特定的項目來說這是一個可以接受的解決方案(因爲我可能會希望在那裏有主圖標),但我仍然很想知道是否有其他方法可以完成這項工作 - 原因 - 不希望顯示主頁圖標。

+1

不,這是一個在Android 4.1中可以修復的錯誤。 –

+0

抱歉,但我不明白這是如何適用於你。如果添加了actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME);在ActionBar.DISPLAY_SHOW_CUSTOM之後,它不再爲我顯示自定義的ActionBar – Egis

相關問題