2012-03-24 18 views
10

Ok, tengo una actividad donde aparece EditText y en la tecla Enter se muestran los resultados de búsqueda, así que lo que quiero hacer es cerrar el teclado cuando los resultados de la búsqueda estén a punto de mostrarse para evitar que el usuario tenga que hacerlo . Sin embargo, si el usuario desea refinar su búsqueda, el teclado debería abrirse nuevamente si vuelve a presionar EditText.¿Ocultar el teclado después de las búsquedas del usuario?

Esto ha sido más difícil de lo que imaginaba, he estado buscando y he intentado algunas cosas más, ni siquiera cierro el teclado en mi HTC, un método donde InputType está establecido en INPUT_NULL cierra el teclado pero no funciona abrir después

¿Alguna sugerencia sobre cómo hacer esto?

+1

posible duplicado de [Cerrar/ocultar el teclado suave de Android] (http://stackoverflow.com/questions/1109022/close-hide-the-android-soft-keyboard) –

Respuesta

2

I belive este fragmento de código se cerrará el teclado:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); 

si no se prueba este:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

quiero saber si estos trabajos

+0

Imm utilizado con el método hideSoftInputFromWindow sin obj creado, y después del método se crea su obj. fuente equivocada –

+0

He copiado y pegado en el orden incorrecto pero debería funcionar – testingtester

+0

imposible ver @gabriel lo ha editado. –

0

uso tio siguiente para ocultar keybord esto

InputMethodManager in = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
in.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); 

o utilizar este

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
8

La forma correcta de hacer esto:

  1. set imeOptions a "actionSearch"
  2. inicializar los oyentes para la entrada y buscar el botón (si está disponible)

    searchEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
        @Override 
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
         if (actionId == EditorInfo.IME_ACTION_SEARCH) { 
          performSearch(); 
          return true; 
         } 
    
         return false; 
        } 
    }); 
    view.findViewById(R.id.bigSearchBar_button).setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         performSearch(); 
        } 
    }); 
    
  3. Ocultar el teclado cuando el usuario hace clic en la búsqueda. Para asegurarse de que el teclado no se mostrará cuando el usuario minimiza y restaura Activity usted tiene que quitar el foco de EditText

    private void performSearch() { 
        searchEditText.clearFocus(); 
        InputMethodManager in = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
        in.hideSoftInputFromWindow(searchEditText.getWindowToken(), 0); 
        ... perform search ... 
    } 
    
+0

¡Gracias por una solución muy simple y agradable! –

17
@Override 
public boolean onQueryTextSubmit(String query) { 
    // Your search methods 

    searchView.clearFocus(); 
    return true; 
} 

Directo al grano y limpio.

Cuestiones relacionadas