¿Hay una manera de evitar tener FullView SearchView / Keyboard en el paisaje?
Estoy tratando de evitar tener la edición de teclado en pantalla completa en el paisaje con el fin de acceder a las sugerencias.
Ya he leído un montón de hilos explicando que tengo que añadir EditorInfo banderas como flagNoFullscreen y / o flagNoExtractUi .
- Búsqueda de espacios, líneas nuevas y pestañas con charAt ()
- Uso de fuentes personalizadas para todo el texto de la aplicación que no funciona con Lollipop
- Valor devuelto del hilo
- iOS alternativa al android's UUID (long mostSigBits, long leastSigBits)
- Error: NullPointerAccess: La variable "" sólo puede ser null en esta ubicación
Los agregué programáticamente pero no realmente útil.
¿Hay una manera de resolver esto?
- Determine cuando un ScheduledExecutorService disparará a continuación
- Error: Error de ejecución para la tarea ': app: transformClassesAndResourcesWithProguardForRelease
- Gestión de memoria HttpClient
- Ejemplos de patrones de diseño de Android MVVM
- Cargando imágenes grandes sin OutOfMemoryError
- Dilatación y erosión en Android
- SQlite Obteniendo las ubicaciones más cercanas (con latitud y longitud)
- Obtener el nombre del método actual que se está ejecutando
Me tomó un tiempo para averiguar esto, pero en realidad es bastante simple.
Inicialmente creé una clase personalizada que amplió la clase onCreateInputConnection()
y usé un onCreateInputConnection()
, sin embargo no pude conseguir que funcione de esa manera.
Finalmente lo conseguí trabajando de una manera mucho más simple, con sólo dos líneas añadidas de código.
Sólo tiene que llamar a search.getImeOptions()
para obtener la configuración actual y, a continuación, "o" el resultado con EditorInfo.IME_FLAG_NO_EXTRACT_UI
con una llamada a setImeOptions()
:
search.setImeOptions(options|EditorInfo.IME_FLAG_NO_EXTRACT_UI);
Si no "o" con las opciones existentes, entonces no obtendrá el botón de finalización "Buscar" en la parte inferior derecha, sólo obtendrá un botón "Listo" en su lugar.
Aquí está el onCreateOptionsMenu()
completo de onCreateOptionsMenu()
que usé para probar (utilicé un SearchView en el xml, pero esta solución debería funcionar para usted aunque no esté inflando su SearchView desde xml):
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); SearchManager manager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); SearchView search = (SearchView) menu.findItem(R.id.action_search).getActionView(); SearchableInfo si = manager.getSearchableInfo(getComponentName()); //Here is where the magic happens: int options = search.getImeOptions(); search.setImeOptions(options|EditorInfo.IME_FLAG_NO_EXTRACT_UI); //!!!!!!!!!!! search.setSearchableInfo(si); search.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { return false; } @Override public boolean onQueryTextChange(String query) { return true; } }); return true; }
Aquí está el xml que utilicé para el SearchView en menu_main.xml:
<item android:id="@+id/action_search" android:title="Search" android:icon="@android:drawable/ic_menu_search" app:showAsAction="ifRoom" app:actionViewClass="android.support.v7.widget.SearchView" />
Resultado sin la llamada a setImeOptions()
:
Resultado con la llamada a setImeOptions()
:
- Cómo agregar un degradado a un ImageView anidado en un CollapsingToolbar
- Android – detector de eventos