2012-04-25 2 views
8

Nella mia applicazione ho una vista con listview e searchbar per cercare nella listview. Quando tocchi la barra di ricerca, viene messa a fuoco e viene visualizzata la tastiera morbida. Quando tocco la listview la tastiera rimane in cima alla listview, quindi non riesco a vedere gran parte della mia listview.Android Rimuovi tastiera morbida quando si tocca la listview

La mia domanda: La mia domanda: Come faccio a sapere se la lista è stata sfogliata/spostata/... e come rimuovere la tastiera virtuale E rimuovere la messa a fuoco dall'editxt?

+0

Ciao ho domanda qui, se possibile, mi puoi dire di default la barra di ricerca non sta mostrando il SoftKeyboard. Im la mia app come appena l'attività inizia, viene visualizzata la softkey. – Manju

risposta

3

Take a look at this question per scoprire come chiudere la tastiera, come per sapere se il listview è stata scorrimento, è possibile estendere la classe ListView e sovrascrivere il metodo onScrollChanged() e per fare quello che vuoi, quando scorrimento è interagito con

Edit: v'è in realtà un OnScrollListener per l'ascolto delle variazioni di scorrimento in una lista

18

in base alla risposta @androidnoob, i post qui (per gli altri che hanno questo problema specifico) il codice completo necessario.

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 (nuova 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) { 

     } 
    });