拥有SearchView时更改工具栏标题

时间:2018-04-05 12:31:35

标签: android android-toolbar 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>

2 个答案:

答案 0 :(得分:1)

将“搜索项目”膨胀为菜单项

在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”

我希望这会帮助你

答案 1 :(得分:0)

您需要更改此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);
}