setTitle()在不同时间表现不同

时间:2017-08-24 05:01:54

标签: android android-support-library android-toolbar android-appcompat

我使用AppCompatActivity延长ActionBar并设置setSupportActionBar()

设置标题时有点混乱。

如果我这样做 -

Toolbar toolbar = (Toolbar) findViewById(R.id.titlebar);
setSupportActionBar(toolbar);
toolbar.setTitle("Title 1"); // Does not work
setTitle("Title 2"); // Works
getSupportActionBar().setTitle("Title 3"); // Works
setTitle("Title 4"); // Does not work. Why?

我看到getSupportActionBar().setTitle()正在为标题创建新视图,然后活动正在丢失对它的引用。 这是Android中的预期行为还是错误?

3 个答案:

答案 0 :(得分:1)

如果您致电setSupportActionBar(Toolbar),,则操作栏负责处理标题,因此您需要致电getSupportActionBar().setTitle("My Title");来设置自定义标题。

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

toolbar是行动栏的一般形式。

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

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

答案 1 :(得分:1)

复制此行

setSupportActionBar(toolbar);

添加行的结尾。

Toolbar toolbar = (Toolbar) findViewById(R.id.titlebar);    
setSupportActionBar(toolbar);
toolbar.setTitle("Title 1");
setTitle("Title 2");
getSupportActionBar().setTitle("Title 3");
setTitle("Title 4");
setSupportActionBar(toolbar);

答案 2 :(得分:0)

设置setSupportActionBar(Toolbar)后,这是预期的行为。支持库内部为显示标题创建新视图。

setTitle()Activity的方法,如果使用setActionBar(Toolbar),它只会更新标题。但是,它没有向后兼容性。

参考

AppCompatDelegateImplBase

AppCompatDelegateImplV9