2012-04-25 4 views
8

W mojej aplikacji mam widok z listview i pasek wyszukiwania do wyszukiwania w widoku listy. Po dotknięciu paska wyszukiwania pojawia się fokus i pojawia się miękka klawiatura. Kiedy dotknę listview, klawiatura pozostaje na szczycie listy, dlatego nie widzę wielu moich listview.Android Usuń miękką klawiaturę podczas dotykania widoku listy

Moje pytanie: Skąd mam wiedzieć, czy listview został dotknięty/przewinięty/... i jak usunąć miękką klawiaturę I usunąć fokus z editekstu?

+0

Witam mam tu pytanie czy możliwe możesz mi powiedzieć domyślnie pasek wyszukiwania nie pokazano softkeyboard. Im moją aplikację jako wkrótce, gdy zaczyna się aktywność, pojawia się softkey. – Manju

Odpowiedz

3

Take a look at this question aby dowiedzieć się, w jaki sposób, aby zamknąć klawiaturę, jak na wiedząc, czy ListView został przewinięty, można rozszerzyć klasę listview i zastąpić metodę onScrollChanged() i robić, co chcesz, kiedy przewijać się w interakcję z

Edit: tam jest rzeczywiście OnScrollListener do nasłuchiwania zmian przewijać pogrupowanych

18

podstawie @androidnoob odpowiedzi zamieścić tutaj (dla innych mających tego konkretnego problemu) pełny kod potrzebny.

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

     } 
    });