我试图使用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>

但问题并没有解决。


当前回答

请参见https://code.google.com/p/android/issues/detail?id=77763。显然它应该是这样工作的。一旦您调用了setSupportActionBar()方法调用,那么ActionBar委托就有责任将调用路由到正确的视图。

其他回答

只需在适配器中使用它, MainActivity是AppCompactActivity。 在任何地方都可以调用它。

((MainActivity) context).getSupportActionBar().setTitle(titles.get(position));

对于任何在设置SupportActionBar后需要通过工具栏设置标题的人,请阅读本文。

支持库的内部实现只是在设置SupportActionBar时检查工具栏是否有标题(不是空)。如果有,则将使用此标题而不是窗口标题。然后,您可以在加载真实标题时设置一个虚拟标题。

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

后来……

mActionBarToolbar.setTitle(title);

如果你的目标是在工具栏中设置一个静态字符串,最简单的方法是在AndroidManifest.xml中设置活动标签:

<activity android:name=".xxxxActivity"
          android:label="@string/string_id" />

工具栏不需要任何代码就可以得到这个字符串。(适用于v27库。)

对于那些在设置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");

试试这个,你可以直接在XML中定义title:

 <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:title="some title"
        app:popupTheme="@style/AppTheme.PopupOverlay">