如果使用android:uiOptions="splitActionBarWhenNarrow"
中的Manifext.xml
将Android ActionBar拆分为顶部和底部,
有没有办法强制一些动作显示在顶部而不是全部放在底部?
答案 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;
}