拥有 SearchView 时更改工具栏标题

Change Toolbar title while having SearchView

我有一个工具栏,我想更改它的标题。 首先,我在其中有一个 SearchView,所以我将 SearchView 添加到工具栏,如下所示:

private void setupSearchView() {
    mSearchView = new SearchView(this);     
    searchEditText.setTextColor(getResources().getColor(R.color.white));

    mSearchView.setMaxWidth(Integer.MAX_VALUE);
    mSearchView.setOnQueryTextListener(this);
    mSearchView.setSubmitButtonEnabled(false);
}

然后我设置Toolbar

private void setupSearchToolbar() {
    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    if (getSupportActionBar() != null) {
        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    } 
}

此时,我想删除 SearchView 并添加标题。我试过了

第一种方法:this.setTitle(title)

第二种方法:

private void setupToolbar() {
     Toolbar mActionBarToolbar = (Toolbar) 
     findViewById(R.id.toolbar);
     setSupportActionBar(mActionBarToolbar); 

     if (getSupportActionBar() != null) {
         getSupportActionBar().setTitle("My title");
     }
 }

我可以用 mSearchView.setVisibility(View.GONE) 摆脱 SearchView,但是调用 setupToolbar() 仍然没有任何改变。

Xml结构:

<CoordinatorLayout>
    <AppBarLayout>
        <Toolbar/>
    </AppBarLayout>
</CoordinatorLayout>

您需要按如下方式更改此 setupToolbar()

Toolbar mActionBarToolbar;

private void setupToolbar() {
    mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar);
    mActionBarToolbar.setTitle("My title");
    setSupportActionBar(mActionBarToolbar); 
    mSearchView.onActionViewCollapsed();
}

并创建一个函数将标题更改为

private void changeTitle(String newTitle){
    mSearchView.onActionViewCollapsed();
    mActionBarToolbar.setTitle(newTitle);
}

膨胀 "Search Item" 作为菜单项,

在 res/menu 目录中添加此菜单文件:

menu_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">

<item
    android:id="@+id/action_search"
    android:icon="@drawable/search_icon"
    android:title="Search"
    app:actionViewClass="android.support.v7.widget.SearchView"
    app:iconTint="@color/colorAccent"
    app:showAsAction="always|collapseActionView"
    tools:ignore="HardcodedText" />
</menu>

在 setupSearchTooBar() 方法中像这样膨胀它,

toolbar.inflateMenu(R.menu.menuitem)

并在 SetUpSearchView()

mSearchItem = (MenuItem) toobar.getMenu().findItem(R.id.action_search)
mSearchView = (SearchView) mSearchItem.getActionView()

现在设置标题 this.title = "your title" 或 toolbar.title = "your title"

希望对您有所帮助