Изменить заголовок панели инструментов при наличии 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");
     }
 }

Я могу избавиться от SearchView с помощью mSearchView.setVisibility(View.GONE), но вызов setupToolbar() все равно ничего не меняет.

Структура XML:

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

также опубликуйте свой xml

Shubham Srivastava 05.04.2018 14:54
0
1
1 288
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам необходимо изменить этот 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);
}

Это не помогает. SearchView по-прежнему отображается, а заголовок не отображается.

MaartinAndroid 05.04.2018 14:52
Ответ принят как подходящий

Добавьте "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".

Я надеюсь, что это поможет вам

Другие вопросы по теме