恢复默认操作栏布局

Posted

技术标签:

【中文标题】恢复默认操作栏布局【英文标题】:Restore default actionbar layout 【发布时间】:2012-12-02 20:07:01 【问题描述】:

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

【问题讨论】:

【参考方案1】:

显示/隐藏自定义操作栏视图

由于您只向栏添加了自定义视图而没有删除标题,因此隐藏该自定义 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。

【讨论】:

这让标题和图标消失了。任何想法如何让他们回来? mActionBar.setTitle(); 不起作用。 DetailsHost.mActionBar.setDisplayShowTitleEnabled(true);DetailsHost.mActionBar.setDisplayShowHomeEnabled(true); 再次启用它们。 是的,这行得通。此外,您可以使用DetailsHost.mActionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE); 而不是调用这三个方法。 在我的情况下是DetailsHost.mActionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_HOME_AS_UP);,我还需要启用向上按钮。非常感谢您的帮助。 是的,没错。我更新了答案以包含缺失的部分。【参考方案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 中编写的。

希望这有帮助!

【讨论】:

以上是关于恢复默认操作栏布局的主要内容,如果未能解决你的问题,请参考以下文章

ArcGIS Catalog 恢复窗口默认位置

IntelliJ IDEA恢复默认的布局

iOS导航栏和状态栏

默认操作栏高程

导航栏设置了背景图片后恢复默认

如何恢复EXCEL菜单栏和工具栏的默认状态