问题 getSupportActionBar()。setTitle()vs toolbar.setTitle()


我知道 有两种方法可以在Android中设置标题 Activity

假设我已经有以下代码......

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_activity);

    ...

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

......我可以用这个...

getSupportActionBar().setTitle("My title");

...或这个...

toolbar.setTitle("My title");

......设定我的头衔。

我的问题是, 这是更好的做法


3082
2017-12-06 13:45


起源

既然你有一个工具栏对象,为什么不使用它的方法呢? - cricket_007
如果您已经拥有工具栏,那么使用其方法肯定是更好的做法。所以使用toolbar.setTitle()。 - pandabear
有时我想念方法链接.. setSupportActionbar(toolbar).setTitle(R.string.title);  但有人甚至不能 setSupportActionbar(toolbar.setTitle(R.string.title)); - Tapirboy


答案:


如果你打电话 setSupportActionBar(Toolbar), 那么Action Bar负责处理标题,因此你需要打电话 getSupportActionBar().setTitle("My Title"); 设置自定义标题。

另请查看此链接在哪里 toolbar.setTitle("My title"); 可能会导致如下问题: - 在Android应用程序中,Toolbar.setTitle方法无效 - 应用程序名称显示为标题

而工具栏是动作栏的一般形式。

我们可以将多个工具栏作为布局窗口小部件,但不是操作。

因此,更好的方法是使用 getSupportActionBar().setTitle("My Title");


16
2017-12-06 14:48



这是否也意味着 getSupportActionBar().setHomeAsUpIndicator(int) 是比较好的做法 toolbar.setNavigationIcon(int),或者这些略有不同? - Farbod Salamat-Zadeh
你说对了....... - Androider


setSupportActionBar(toolbar);

此行的目的是将传入的工具栏设置为活动应用栏。所以这种方式完全可以接受;就像你已经创建了一个工具栏一样,我会在使用上面的方法传递之前设置工具栏的标题。


0
2017-12-06 14:26