拥有 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"
希望对您有所帮助
我有一个工具栏,我想更改它的标题。
首先,我在其中有一个 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"
希望对您有所帮助