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