Search code examples
androidandroid-toolbarsearchview

Change Toolbar title while having SearchView


I've a toolbar and I want to change it's Title. At first, I've a SearchView in it, so I add SearchView to toolbar like this:

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);
}

Then I set Toolbar

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

At this point, I'd like to remove SearchView and add title. I tried

First approach: this.setTitle(title)

Second approach:

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

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

I can get rid of SearchView with mSearchView.setVisibility(View.GONE), but then calling setupToolbar() still doesn't change anything.

Xml structure:

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

Solution

  • Inflate "Search Item" as menu item,

    add this menu file in res/menu directory:

    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>
    

    In setupSearchTooBar() method inflate it like this,

    toolbar.inflateMenu(R.menu.menuitem)
    

    and in SetUpSearchView()

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

    Now set title either this.title = "your title" or toolbar.title = "your title"

    I hope this will Help you