Я реализовал Android search widget
в своем приложении на основе navigation drawer
. Я установил его, чтобы открыть клавиатуру и сфокусировать editText
при нажатии на значок поиска. Я хочу установить кнопку «Назад» (кнопку «вверх»), чтобы скрыть клавиатуру. Я искал в Интернете R.id
кнопки вверх и нашел это android.R.id.home
. Итак, я установил это так:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
...
case android.R.id.home:
hideKeyboard();
break;
...
}
Я отладил код и заметил, что нажатие на значок navigation bar
запускает android.R.id.home
, но нажатие кнопки вверх виджета поиска даже не вызывает функцию onOptionsItemSelected(MenuItem item)
. Я также пробовал это:
searchView.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
hideKeyboard();
}
}
});
Но не сработало.
Как скрыть клавиатуру при нажатии кнопки назад (вверх)?
Настройка вида поиска:
private void setSearchView(Menu menu) {
// Get the SearchView and set the searchable configuration
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchView = (SearchView) menu.findItem(R.id.search).getActionView();
// Assumes current activity is the searchable activity
searchView.setSearchableInfo(searchManager
.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false);
SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
public boolean onQueryTextChange(String newText) {
Home.getFilter().filter(newText);
return true;
}
public boolean onQueryTextSubmit(String query) {
return true;
}
};
searchView.setOnQueryTextListener(queryTextListener);
}