2012-04-25 9 views
8

En mi aplicación tengo una vista con una lista y una barra de búsqueda para buscar en la vista de lista. Cuando toca la barra de búsqueda, obtiene el foco y aparece el teclado virtual. Cuando toco la vista de lista, el teclado permanece en la parte superior de la vista de lista, por lo tanto, no puedo ver mucho de mi lista de lista.Android Eliminar el teclado virtual al tocar la vista de lista

Mi pregunta: ¿Cómo sé si se ha tocado/desplazado/... y cómo elimino el teclado suave Y quito el foco del texto de edición?

+0

Hola tengo pregunta aquí si es posible que me puede decir por defecto la barra de búsqueda no muestra la softkeyboard. Im mi aplicación como tan pronto como comienza la actividad, aparece la placa de teclas programables. – Manju

Respuesta

3

Take a look at this question a encontrar la manera de cerrar el teclado, como para saber si la vista de lista se ha desplazado, puede extender la clase vista de lista y reemplazar el método onScrollChanged() y para hacer lo que quiera cuando se desplazan está interactuado con

Editar: en realidad hay un OnScrollListener para escuchar los cambios de desplazamiento en una vista de lista

18

Basado en respuesta @androidnoob, he puesto aquí (para los otros que tienen este problema específico) el código completo es necesario.

list.setOnScrollListener(new OnScrollListener() { 
    public void onScrollStateChanged(AbsListView view, int scrollState) { 
      //hide KB 
      InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.hideSoftInputFromWindow(colleagueSearch.getWindowToken(), 0); 
      } 

      public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { } 
    }); 
2

yourListView.setOnScrollListener (nueva AbsListView.OnScrollListener() {

 @Override 
     public void onScrollStateChanged(AbsListView view, int scrollState) { 
      if (scrollState != 0){ 

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

      } 
     } 
     @Override 
     public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 

     } 
    }); 
Cuestiones relacionadas