SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(Menus.SEARCH));
searchView.setQueryHint(this.getString(R.string.search));
editSearch = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
editSearch.setHintTextColor(getResources().getColor(R.color.white));
searchView.setOnQueryTextListener(OnQuerySearchView);
private OnQueryTextListener OnQuerySearchView = new OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String newText) {
if (TextUtils.isEmpty(newText)) {
listAllContact.clearTextFilter();
} else {
listAllContact.setFilterText(newText.toString());
}
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
String text = editSearch.getText().toString()
.toLowerCase(Locale.getDefault());
adapter.filter(text);
return true;
}
};
答案 0 :(得分:23)
如果您使用 android.support.v7.widget.SearchView 作为菜单项:
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_search"
android:title=""
app:showAsAction="ifRoom|collapseActionView"
app:actionViewClass="android.support.v7.widget.SearchView"/>
</menu>
您可以使用以下方式处理后退按钮(用于展开状态)
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
searchItem.expandActionView();
MenuItemCompat.setOnActionExpandListener(searchItem, new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
// Write your code here
return true;
}
});
}
答案 1 :(得分:1)
MenuItemCompat.setOnActionExpandListener已弃用
使用
menu.findItem(R.id.action_search)setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem menuItem) {
return false;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem menuItem) {
return false;
}
});
代替
答案 2 :(得分:0)
如果您使用搜索对话框,则可以为Kotlin做类似的事情
override fun onOptionsItemSelected(item: MenuItem): Boolean {
val id = item.itemId
return if (id == R.id.search_button) {
val searchManager = this.getSystemService(Context.SEARCH_SERVICE) as SearchManager
searchManager.setOnDismissListener {
// return the activity to the normal state
}
// set activity to search state then request search
onSearchRequested()
} else super.onOptionsItemSelected(item)
}
答案 3 :(得分:-3)
这是一种做法 -
@Override
public void onBackPressed() {
// Write your code here
super.onBackPressed();
}