我在设置工具栏标题时遇到问题,该工具似乎仅在有延迟时才起作用。
例如,我的应用程序“预测”的简单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");