5

我正在開發一個Android應用程序,使用ActionBarSherlock庫。在一項活動中,我使用標籤式導航結合摺疊的ActionBar(底部的操作項目)。ActionBar中標籤的強制摺疊

在此圖片中,您可以在當前狀態中看到Activity:這些標籤正在被推入第二行。

Current ActionBar


在下面的圖片你可以看到,我希望它是Activity的方式:標籤應該是排在前列的,而不是在第二行。我已閱讀ActionBarActionBarSherlock文檔,但發現無法強制執行此操作。

The wished ActionBar layout

這是當前的代碼,用於創建ActionBar

public class AdminActivity extends SherlockFragmentActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_admin); 

    ActionBar actionBar = getSupportActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(true); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    ActionBar.Tab itemsTab = actionBar.newTab().setText(R.string.label_tab_items); 
    ActionBar.Tab usersTab = actionBar.newTab().setText(R.string.label_tab_users); 

    actionBar.addTab(itemsTab); 
    actionBar.addTab(usersTab); 
} 

任何想法?

+1

你的標題說,「阻止」,但你的問題表明,其實你想要的'Tabs'摺疊成'ActionBar'。 – adneal 2012-07-14 14:11:23

+0

我改正了,謝謝! – damaxxed 2012-07-14 14:14:34

回答

5

有一個反射'黑客'來做到這一點。我對這個解決方案沒有信任,我在這個StackOverflow問題replicate ActionBar Tab(s) with custom view中發現了這個解決方案。

//pre-ICS 
if (actionBarSherlock instanceof ActionBarImpl) { 
    enableEmbeddedTabs(actionBarSherlock); 

//ICS and forward 
} else if (actionBarSherlock instanceof ActionBarWrapper) { 
    try { 
     Field actionBarField = actionBarSherlock.getClass().getDeclaredField("mActionBar"); 
     actionBarField.setAccessible(true); 
     enableEmbeddedTabs(actionBarField.get(actionBarSherlock)); 
    } catch (Exception e) { 
     Log.e(TAG, "Error enabling embedded tabs", e); 
    } 
} 

//helper method 
private void enableEmbeddedTabs(Object actionBar) { 
    try { 
     Method setHasEmbeddedTabsMethod = actionBar.getClass().getDeclaredMethod("setHasEmbeddedTabs", boolean.class); 
     setHasEmbeddedTabsMethod.setAccessible(true); 
     setHasEmbeddedTabsMethod.invoke(actionBar, true); 
    } catch (Exception e) { 
     Log.e(TAG, "Error marking actionbar embedded", e); 
    } 
} 

也這篇博客文章見:http://sparetimedev.blogspot.co.uk/2012/11/forcing-embedded-tabs-in-actionbar.html