Ответ 1
Вдохновленный Parnit ответом, я нашел лучший метод, который также работает и красивее:
mSearchView.clearFocus();
У меня есть поиск, который по умолчанию задан по умолчанию с поисковым запросом по умолчанию, но я не хочу виртуальную клавиатуру. В приведенном ниже коде я пытался скрыть клавиатуру в onCreateOptionsMenu, но все же клавиатура видны.
imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
MenuItem item = menu.findItem(R.id.menu_search);
item.expandActionView();
mSearchView = (SearchView) item.getActionView();
mSearchView.setIconifiedByDefault(false);
mSearchView.setQuery(query, true);
imm.hideSoftInputFromWindow(mSearchView.getWindowToken(), 0);
Я использую виджет вида поиска sherlock. любое предложение скрыть виртуальную клавиатуру. Что я делаю неправильно?
Вдохновленный Parnit ответом, я нашел лучший метод, который также работает и красивее:
mSearchView.clearFocus();
Изменить: я добавил лучшее решение сверху, но также сохранил старый ответ в качестве ссылки.
@Override
public boolean onQueryTextSubmit(String query) {
searchView.clearFocus();
return false;
}
Исходный ответ: Я запрограммировал использование setOnQueryTextListener. Когда поиск скрыт, клавиатура уходит, а затем, когда она снова видна, клавиатура не возвращается назад.
//set query change listener
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){
@Override
public boolean onQueryTextChange(String newText) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onQueryTextSubmit(String query) {
/**
* hides and then unhides search tab to make sure keyboard disappears when query is submitted
*/
searchView.setVisibility(View.INVISIBLE);
searchView.setVisibility(View.VISIBLE);
return false;
}
});
попробуйте
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
добавьте нижнюю строку в манифест для конкретной операции.
android:windowSoftInputMode="adjustPan|stateHidden"
В манифесте Android:
android:windowSoftInputMode="adjustPan|stateHidden"
В классе откройте и закройте клавиатуру:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action buttons
switch(item.getItemId()) {
case R.id.search:
//TODO Whatever
search.clearFocus();
//Open and close the keyboard
InputMethodManager imm = (InputMethodManager)MyApplication.getAppContext().getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
return true;
простое решение для моей работы добавить в XML:
android:focusable="false"