如何创建自定义 ActionBar?

Posted

技术标签:

【中文标题】如何创建自定义 ActionBar?【英文标题】:How can I create a custom ActionBar? 【发布时间】:2014-03-04 15:36:25 【问题描述】:

我正在尝试使用 setCustomView 创建自定义 ActionBar,但是当应用程序加载时,默认 ActionBar 会在自定义视图之前加载,并且选项(菜单项)会自动添加到操作栏中。

我需要像这样创建一个 ActionBar:https://play.google.com/store/apps/details?id=com.homes.rentals

我该怎么做?

更新:

我正在使用 ActionBar AppCompat 支持库。

【问题讨论】:

也许您可以为默认操作栏编写自己的样式? 据我所知和搜索,没有样式选项可以将操作栏标题居中、删除图标等。 【参考方案1】:

那么你如何制作自定义布局 xml,你希望它看起来像什么,然后是这样的:

ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayShowTitleEnabled(false);
    LayoutInflater inflator = (LayoutInflater) this .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflator.inflate(R.layout.custom_action_bar, null);

actionBar.setCustomView(v);

编辑: 要从 ActionBar 中删除您的图标,在 Java 中,请在您的 ActionBar 上调用 setDisplayShowHomeEnabled(false)setDisplayShowTitleEnabled(false)

【讨论】:

这样做和这样做有区别吗? ActionBar actionBar = getSupportActionBar(); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); actionBar.setCustomView(R.layout.actionbar); 它应该是一样的,但你可以测试它:) 实际上,这两种代码都可以工作,但是 android 在加载自定义操作栏之前会显示默认操作栏。【参考方案2】:

使用支持非常低的APISherlockActionBar 库,从API-7 开始。该库允许您添加 customActionBar UI 图标并处理其操作。

从此link下载SherlockActionBar

并使用这个简单的tutorial 知道如何使用它。

【讨论】:

我正在使用 AppCompat 支持库。 试试Sharlock,使用和集成更简单。

以上是关于如何创建自定义 ActionBar?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ActionBar 中显示自定义视图?

如何在 ActionBar 标题中设置自定义字体?

Android界面编程--使用活动条(ActionBar)

如何在 Xamarin ActionBar 标题中设置自定义字体系列?

如何自定义ActionBar上的后退按钮

Android ActionBar 自定义搜索视图