【发布时间】:2015-08-04 12:42:21
【问题描述】:
我有一个自定义的 ActionBar 布局,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="TITLE"
android:textSize="18sp" />
</RelativeLayout>
我在我的 MainActivity 中应用自定义布局,如下所示:
getActionBar().setDisplayShowCustomEnabled(true);
getActionBar().setCustomView(R.layout.action_bar);
这实际上显示了一个居中的文本“TITLE”,但仍然是左侧的旧文本。我的应用调用了几次getActionBar().setTitle(...),这导致旧标题更新,新标题保持原样。
有没有可能,例如通过给我的标题 TextView 一个特定的 ID,getActionBar().setTitle(...) 会更新 TextView 吗?还是我必须实现自定义方法来设置标题?
我该怎么做才能使旧标题消失?
是否与使用 NavigationDrawer 和恢复 ActionBar 有关?我的恢复方法是这样的:
private void restoreActionBar() {
ActionBar actionBar = getActionBar();
if (actionBar != null) {
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setTitle(mTitle);
}
}
【问题讨论】:
-
我手头没有 Android Studio,但是否可以重写 getActionBar() 以返回您自己的实现?
-
并创建我自己的使用自定义标题 TextView 的 ActionBar 实现?是的,我猜,但我怀疑这会使旧标题消失。
-
@Terry 好吧,我只是在猜测 :) 但似乎 getActionBar() 总是返回默认栏,并且覆盖它会使其失去对默认栏的任何引用,使其消失。
-
@milez 您可以设计自己的自定义视图来覆盖 actionBar。然后,该自定义视图将用作 actionBar。
标签: android android-actionbar navigation-drawer