No se puede mostrar el teclado automáticamente en el SearchView

El SearchView está enfocado de forma predeterminada, pero cuando intento mostrar el teclado del software, no sucede:

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0); 

Pero cuando hago clic en el SearchView – lo hace. ¿Por qué?

¡Fijo!

 mSearchView.setOnQueryTextFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View view, boolean hasFocus) { if (hasFocus) { showInputMethod(view.findFocus()); } } }); 

Y

 private void showInputMethod(View view) { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); if (imm != null) { imm.showSoftInput(view, 0); } } 

Encontré este problema con un SearchView que todavía no abriría el teclado, y podía hacerlo agregando un retardo de 200ms:

  mSearchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(final View view, boolean hasFocus) { if (hasFocus) { view.postDelayed(new Runnable() { @Override public void run() { InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(view.findFocus(), 0); } }, 200); } } }); 

¿Qué pasa con setOnFocusChangeListener ?

 searchview.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus){ InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0); } } }); 

Si está utilizando SearchView :

 <android.support.v7.widget.SearchView android:id="@+id/searchView" android:layout_width="match_parent" android:layout_height="wrap_content" android:focusableInTouchMode="true" android:iconifiedByDefault="true" app:showAsAction="always" app:iconifiedByDefault="true"/> 

A continuación, sólo tiene que añadirlo a su método onCreate :

 final SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE); searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); searchView.setIconifiedByDefault(false); searchView.setFocusable(true); searchView.setIconified(false); searchView.requestFocusFromTouch(); 

Esto funciona para mi.

Resolví este problema de la siguiente manera simple.

Elemento de menú SearchView:

 <item android:id="@+id/menu_item_search" android:icon="@drawable/ic_search" android:title="@android:string/search_go" app:actionViewClass="android.support.v7.widget.SearchView" app:showAsAction="**always|collapseActionView**" /> 

Para expandir SearchView y mostrar el teclado mediante programación, llame al:

 mMenuItemSearch.expandActionView(); mSearchView.setQuery("your default query test or null", true); 

Probado con diferentes banderas showAsAction. Como resultado el teclado no se muestra cuando el indicador: " siempre ". Sin embargo, todo funciona con flag: " always | collapseActionView "

ExpandActionView () + setQuery ("texto nulo o restaurado", true); Puede ser llamado cuando la vista creada (o restaurada) muestre el teclado y se enfoque en la búsqueda. PS: llama a mSearchView.clearFocus (); Después de estos dos métodos si no necesita el foco de búsqueda.

Tratar:

 void focusSearchViewAndOpenOrCloseKeyboard(boolean focus) { searchView.setIconified(focus); } 

La fuente nos muestra que SearchView maneja su propio cierre y apertura del teclado virtual .

  • Cómo descartar / cerrar / contraer SearchView en ActionBar en MainActivity?
  • Cambiar el fondo de la sugerencia de AppCompat SearchView
  • Android: getSearchableInfo (getComponentName ()) devolviendo null?
  • El reemplazo de fragmentos activa onQueryTextChange en la vista de búsqueda
  • ActionBarSherlock - SearchView es null?
  • Android SearchView OnFocusChangeListener: onFocusChange no se llama en absoluto
  • Android: haga que la barra de búsqueda completa pueda hacer clic
  • Detección de un clic en el botón de la barra de acción de nuevo - (OnOptionsItemSelected no llamar cuando haga clic en el botón de la barra de acción de vuelta)
  • SearchView con múltiples fragmentos usando viewpager en android
  • El widget de búsqueda no está funcionando en el release apk
  • Cómo manejar el botón Atrás de la vista de búsqueda en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.