11

我将自定义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

4

2 回答 2

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 文档

于 2012-12-14T20:16:26.650 回答
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 中编写的。

希望这可以帮助!!

于 2016-09-19T13:03:09.243 回答