Android工具栏设置标题说明

3

我这里有一个应用程序工具栏:

toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar);

当我想设置屏幕标题时,我需要执行以下操作:

ActionBar bar = getSupportActionBar();
if (bar != null) {
    bar.setTitle(SCREEN_TITLE);
}

我的问题是,为什么调用toolbar.setTitle()没有效果。相反,我需要先获取操作栏,然后才能设置标题?
另外,我可以正常设置工具栏图标,而无需获取操作栏,如下所示:
toolbar.setNavigationIcon(R.drawable.ic_arrow_back_white);

我不是在问如何设置标题,代码可以正确地设置标题。我需要解释为什么需要这个代码逻辑。 - TareK Khoury
浏览那个问题的答案,你会找到解释。 - Semyon Danilov
1个回答

2

Toolbar是应用程序布局中用于操作栏的一般化。与操作栏不同,工具栏不是窗口装饰的一部分。您可以像任何其他小部件一样定义并放置它...因此,您可以自由地将其放置在父布局中的任何位置。

您可以在工具栏中放置任何小部件。

您可以定义多个工具栏。

Toolbar可以放置在视图层次结构的任意嵌套级别上。应用程序可以选择使用setActionBar()方法将Toolbar指定为活动的操作栏。

由于ToolbarActionBar的概括。您必须首先将Toolbar设置为ActionBar,然后才能使用ActionBar的所有方法。

编辑:

这里是解释工具栏概念的链接

这里是在android问题中报告的错误链接:在该问题中,他们建议一旦调用了setSupportActionBar(Toolbar),操作栏就负责处理标题,这意味着您需要调用getSupportActionBar().setTitle(...)来设置自定义标题。它还解释了为什么toolbar.setNavigationIcon(R.drawable.ic_arrow_back_white);有效。

希望这能帮助到您!


你的回答帮助我更好地理解了。但问题是,为什么我可以使用toolbar.setNavigationIcon()来更改返回图标,但无法使用toolbar.setTitle()呢? - TareK Khoury
这是在Android问题中报告的错误链接:https://code.google.com/p/android/issues/detail?id=77763。在问题中,他们建议一旦调用setSupportActionBar(Toolbar),操作栏就负责处理标题,这意味着您需要调用getSupportActionBar()。setTitle(...)来设置自定义标题。 - Rajesh Jadav
我猜这是来自Google的设计模式问题,但我明白了!谢谢。 - TareK Khoury

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接