2012-04-25 70 views
8

在我的應用程序中,我有一個列表視圖和一個用於在列表視圖中搜索的搜索欄。當您點擊搜索欄時,它會獲得焦點,軟鍵盤會亮起。當我觸摸列表視圖時,鍵盤停留在列表視圖的頂部,因此我看不到很多列表視圖。Android在移動列表視圖時刪除軟鍵盤

我的問題: 如何知道列表視圖是否被觸摸/滾動/ ...以及如何刪除軟鍵盤並從edittext中刪除焦點?

+0

嗨,我有問題在這裏如果可能的話,你可以在默認情況下搜索欄沒有顯示softkeyboard告訴我。我的IM應用程序如一旦活動開始軟鍵盤彈出。 – Manju 2012-05-10 14:19:37

回答

3

Take a look at this question找出如何關閉鍵盤,爲知道,如果ListView控件已滾動,你可以擴展列表視圖類並覆蓋onScrollChanged()方法,並做你想做的,當他們滾動被交互

編輯:這裏居然是一個OnScrollListener監聽在ListView

18

基於@androidnoob答案滾動的變化,我張貼在這裏(具有該具體問題等)所需的全部代碼。

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

     } 
    });