我试图使用android-support-v7:21库创建简单的应用程序。 代码片段: MainActivity.java

public class MainActivity extends ActionBarActivity {

    Toolbar mActionBarToolbar;

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

        mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);            
        mActionBarToolbar.setTitle("My title");
        setSupportActionBar(mActionBarToolbar);
}

activity_main.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:orientation="vertical">

    <android.support.v7.widget.Toolbar            
        android:id="@+id/toolbar_actionbar"
        android:background="@null"
        android:layout_width="match_parent"
        android:layout_height="?actionBarSize"
        android:fitsSystemWindows="true" />

</LinearLayout>

但是工具栏上显示的不是“我的标题”%应用程序名称%。 似乎setTitle方法没有效果。 我想展示"我的头衔"

乌利希期刊指南: 在此之前,styles.xml是:

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="windowActionBar">false</item>
</style>

我以为动作栏不用。 我添加了NoActionBar到父样式:

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="windowActionBar">false</item>
</style>

但问题并没有解决。


当前回答

这不仅仅是关于.setTitle

onCreate中支持工具栏(Appcompat v7)的更多方法仅适用于

.method getSupportActionBar () ()

并且不使用mToolbar.method()

例子:

getSupportActionBar().setTitle("toolbar title");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

虽然next方法在onCreate中没有getSupportActionBar()工作很好

mToolbar.setVisibility(View.VISIBLE);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //
    }

问题只与onCreate事件,你仍然可以使用mToolbar.setTitle()之后,而不是恼人的getSupportActionBar().setTitle(),例如,如果你添加这个在onCreate它将工作(因为它将被执行后,onCreate)

mHandler.post(new Runnable() {
    @Override
    public void run() {
        mToolbar.setTitle("toolbar title");
    }
});

我更喜欢使用这个解决方案https://stackoverflow.com/a/35430590/4548520而不是https://stackoverflow.com/a/26506858/4548520,因为如果你改变标题很多次(在不同的函数),使用mToolbar.setTitle()比更长的getSupportActionBar().setTitle()一个,你不会看到讨厌的通知null异常像getSupportActionBar().setTitle()

其他回答

为每个不同的活动更改标题

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pizza);
    setTitle(getResources().getText(R.string.title));
}

我用了-

toolbar.post(new Runnable() {
            @Override
            public void run() {
                toolbar.setTitle("My Title");
            }
        });

对于那些在设置SupportActionBar (@sorianiv)后需要通过工具栏设置标题的人来说,你的工具栏在一个折叠工具栏布局中,请阅读以下内容:

mToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.toolbar_layout);
Toolbar toolbar = findViewById(R.id.toolbar);
//toolbar.setTitle(""); // no need to do this
//mToolbarLayout.setTitle("Title"); // if you need an initial title, do this instead
setSupportActionBar(toolbar);

之后,

mToolbarLayout.setTitle("New Title");

答案在文档中(你可以在这里找到):

要使用ActionBar实用程序方法,请调用活动的 getSupportActionBar()方法。类的引用 appcompat ActionBar对象。一旦你有了证明人,你就可以打电话了 任何ActionBar方法来调整应用程序栏。例如, 隐藏应用程序栏,调用ActionBar.hide()。

这就是你实际找到的解。我只是想参考一下官方文件(显然很少有人愿意阅读)。

我有个奇怪的行为也许能帮到你。 这是工作,但它没有影响onCreate只:

toolbar.setTitle("title");

试着在onCreate中使用这个:

yourActivityName.this.setTitle("title")