【问题标题】:Force collapse of tabs in ActionBar强制折叠 ActionBar 中的选项卡
【发布时间】:2012-07-14 14:08:36
【问题描述】:

我正在使用ActionBarSherlock 库开发一个Android 应用程序。在一项活动中,我将标签式导航与折叠的ActionBar(底部的操作项)结合使用。

在这张图片中,您可以看到处于当前状态Activity:标签被推入第二行。


在下图中,您可以看到Activity 我想要的样子:标签应该在第一行,而不是在第二行。我已经阅读了 ActionBarActionBarSherlock 文档,但没有找到强制这种行为的方法。

这是当前代码,用于创建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);
}

有什么想法吗?

【问题讨论】:

  • 您的标题是“防止”,但您的问题表明,事实上,您希望 Tabs 折叠成 ActionBar

标签: android android-tabhost android-actionbar actionbarsherlock android-tabs


【解决方案1】:

有一个反射'hack'来做到这一点。我在 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    相关资源
    最近更新 更多