我将自定义View
应用于ActionBar
,就像这样
// Inflate the "Done/Discard" custom ActionBar view.
LayoutInflater inflater = (LayoutInflater) DetailsHost.mActionBar
.getThemedContext().getSystemService(DetailsHost.LAYOUT_INFLATER_SERVICE);
final View customActionBarView = inflater.inflate(
R.layout.actionbar_custom_view_done_discard, null);
// Show the custom ActionBar view and hide the normal Home icon and title.
DetailsHost.mActionBar.setDisplayOptions(
ActionBar.DISPLAY_SHOW_CUSTOM,
ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME
| ActionBar.DISPLAY_SHOW_TITLE);
DetailsHost.mActionBar.setCustomView(customActionBarView,
new ActionBar.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
(基于Roman Nuriks代码)。
如何恢复初始布局?注意:我使用ActionBarSherlock
答案 0 :(得分:29)
由于您只是在不删除标题的情况下向条形图添加了自定义视图,因此隐藏该自定义View
就足够了。您可以使用方法setDisplayShowCustomEnabled()
。请致电:
getActivity().getActionBar().setDisplayShowCustomEnabled(false);
再次启用家庭功能:
getActivity().getActionBar().setDisplayShowHomeEnabled(true);
(如果您使用的是动作栏,请注意所有代码示例都使用getSupportActionBar()
而不是getActionBar()
。此外,getActivity()
仅需要片段,在活动中参考活动本身,在大多数情况下this
)
但是,如果您在创建自定义视图时也删除了标题,则还必须再次启用该标题。
getActivity().getActionBar().setDisplayShowTitleEnabled(true);
您还可以使用一组选项调用setDisplayOptions()方法,以在一次调用中重新配置操作栏。以下示例删除自定义视图并显示标题。
getActivity().getActionBar().setDisplayOptions(
ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
有关这些选项的详细信息,请参阅Android API docs。
答案 1 :(得分:2)
ActionBar actionbar;
actionbar = getActionBar();
Button cls = (Button)findViewById(R.id.btn_close);
cls.setOnClickListener(new OnClickListener(){
public void onClick(View view){
actionbar.setDisplayShowCustomEnabled(false);
}
});
注意: ID为'btn_close'的按钮位于自定义操作栏布局中。此函数是在mainactivity中编写的。
希望这有助于!!