我在设置工具栏的标题时出现问题,只有在出现延迟时才会起作用。
例如,我的应用程序'预测'
的简单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)
答案 0 :(得分:2)
如果您致电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");
答案 1 :(得分:0)
正如maRShmallow所说,我将_toolbar.setTitle()更改为getSupportActionBar()。setTitle()