2015-07-23 18 views
5

navigation drawer tabanlı uygulamasında Android search widget'u uyguladım. Klavyeyi açmak ve arama simgesine tıkladığınızda editText'u odaklamak için ayarladım. Klavyeyi gizlemek için geri düğmesini (yukarı tuşu) ayarlamak istiyorum. Yukarı düğmesini R.id için web'de aradım ve bu android.R.id.home'u buldum. Bu yüzden olmasını belirledik: Ben kodu debug ve android.R.id.home kadar navigation bar simge yangınları tıklayarak, ancak bu bile onOptionsItemSelected(MenuItem item) girmezse arama widget kadar düğmesine basarak fark Arama parçacığı geri düğmesi işlevini ayarla

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    ... 
    case android.R.id.home: 
     hideKeyboard(); 
     break; 
    ... 
} 

işlevi. Ben de bu denedim:

searchView.setOnFocusChangeListener(new OnFocusChangeListener() { 
    @Override 
    public void onFocusChange(View v, boolean hasFocus) { 
     if (!hasFocus) { 
      hideKeyboard(); 
     } 
    } 
}); 

Ama işe yaramadı.

Geri (yukarı) düğmesine basarken klavyeyi nasıl gizleyebilirim?

arama görünüm ayarlamak:

private void setSearchView(Menu menu) { 
    // Get the SearchView and set the searchable configuration 
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    searchView = (SearchView) menu.findItem(R.id.search).getActionView(); 
    // Assumes current activity is the searchable activity 
    searchView.setSearchableInfo(searchManager 
      .getSearchableInfo(getComponentName())); 
    searchView.setIconifiedByDefault(false); 

    SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() { 
     public boolean onQueryTextChange(String newText) { 
      Home.getFilter().filter(newText); 
      return true; 
     } 

     public boolean onQueryTextSubmit(String query) { 
      return true; 
     } 
    }; 
    searchView.setOnQueryTextListener(queryTextListener); 
} 

cevap

2

Aşağıdaki kod gerektiği işi:

searchView = (SearchView) menu.findItem(R.id.search).getActionView(); 

searchView.setOnCloseListener(new OnCloseListener() { 
    @Override 
    public bool OnClose() { 
     searchView.clearFocus(); 
     return true; 
}); 

Ancak bu nedense benim için çalışmadı. : -/

Ben here altında geçici çözümü buldu:

searchView = (SearchView) menu.findItem(R.id.search).getActionView(); 

searchView.addOnAttachStateChangeListener(new OnAttachStateChangeListener() { 

    @Override 
    public void onViewDetachedFromWindow(View v) { 
     searchView.clearFocus(); 
    } 

    @Override 
    public void onViewAttachedToWindow(View v) { 

    } 
}); 

ben SearchView kapatıldıktan sonra onOptionsItemSelected(android.R.id.home) sadece adı verilecek düşünüyorum çünkü android.R.id.home kullanarak çalışacağını sanmıyorum.

+0

Bu konuya dikkat ettiniz mi? [SearchView'ın OnCloseListener çalışmıyor] (http://stackoverflow.com/questions/9327826/searchviews-oncloselistener-doesnt-work/12975254#12975254). İkinci kısım, bu yazarın 'android.R.id.home' güvenmemesi gerekir, ancak tamamen. –

İlgili konular