Внедрих 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);
}