我在设置工具栏标题时遇到问题,该工具似乎仅在有延迟时才起作用。

例如,我的应用程序“预测”的简单oncreate()方法

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);
    setSupportActionBar(_toolbar);
    setTitle("ABCDEFG");
}


运行该应用程序时,工具栏具有我的应用程序名称,而不是“ ABCDEFG”。

但是,如果我在设置标题之前延迟了200毫秒。

    Observable.just("ABCDEFG")
            .delay(200,TimeUnit.MILLISECONDS)
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(this::setTitle);


我的工具栏标题正确显示为“ ABCDEFG”

使用工具栏做任何事情都是一样的,有人知道这里到底发生了什么吗?以及如何解决这个问题而又不必拖延?

这是我的工具栏xml。

<android.support.design.widget.AppBarLayout
    android:id="@+id/appBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fitsSystemWindows="true"
    android:theme="@style/AppTheme.AppBarOverlay">


    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?android:attr/actionBarSize"
        app:layout_collapseMode="pin"
        app:layout_scrollFlags="scroll"
        app:popupTheme="@style/AppTheme.PopupOverlay" />


</android.support.design.widget.AppBarLayout>


谢谢你的帮助!

编辑忘记提及setTitle()只是调用_toolbar.setTitle(title)

最佳答案

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

还要检查此链接,其中toolbar.setTitle("My title");可能会引起如下问题:-In android app Toolbar.setTitle method has no effect – application name is shown as title

工具栏是操作栏的一般形式。

我们可以有多个工具栏作为布局小部件,但没有动作。

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

07-24 09:50
查看更多