如何将操作添加到拆分ActionBar的顶部

时间:2012-01-31 08:13:50

标签: android split android-actionbar

如果使用android:uiOptions="splitActionBarWhenNarrow"中的Manifext.xml将Android ActionBar拆分为顶部和底部, 有没有办法强制一些动作显示在顶部而不是全部放在底部?

3 个答案:

答案 0 :(得分:1)

没有标准的方法可以做到这一点。也就是说,Action Bar自定义视图将显示在上方栏中,因此您可以使用它。你会失去一些额外的东西(长按的祝酒词),所以你必须自己实施它们。也就是说,你正在使用ActionBarSherlock,普通按钮的所有布局和样式都在那里,所以你可以使用它们。

答案 1 :(得分:1)

是的!您可以继续在Manifest.xml中使用android:uiOptions="splitActionBarWhenNarrow"

您还需要设置:

// set the actionbar to use the custom view
getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);

//set the custom view to use
getActionBar().setCustomView(R.layout.custom_action_bar_top);

其中R.layout.custom_action_bar_top是一个包含您希望在顶部操作栏中显示的所有按钮的视图。

您想要在底部的所有菜单项都应该照常添加到活动的onCreateOptionsMenu方法中。

答案 2 :(得分:1)

我想第二个Dylan Watson的解决方案,但有一个改进。 对于那些想要保留标题而不是用新视图替换整个actionBar的人,他们使用getActionBar().setDisplayShowCustomEnabled(true)而不是getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);,因为后者会导致新视图成为唯一的视图显示在操作栏中。我的代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = new SearchView(this);
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    getActionBar().setDisplayShowCustomEnabled(true);
    getActionBar().setCustomView(searchView, new ActionBar.LayoutParams(Gravity.RIGHT));
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}