2013-02-13 9 views
5

mam searchView który wygląda tak:Android SearchView onclick

private void setupSearchView() { 
    mSearchView = (SearchView) getActivity().findViewById(
      R.id.search_view_neue); 
    setSearchViewBackground(); 
    mSearchView.setOnClickListener(this); 
    mSearchView.setOnQueryTextListener(this); 
} 




    public boolean onQueryTextSubmit(String query) { 
    searchcounter = searchcounter + 1; 

    setSearchViewBackground(); 
    ArrayList<WissensdokumenteRecord> documents = settingListContent(new ArrayList<WissensdokumenteRecord>()); 

    setListAdapter(new NeueWissensdokumentItemAdapter(
      inflater.getContext(), R.layout.row_example, documents)); 
    InputMethodManager im = (InputMethodManager) getActivity() 
      .getSystemService(Context.INPUT_METHOD_SERVICE); 
    im.hideSoftInputFromWindow(getActivity().getCurrentFocus() 
      .getWindowToken(), 0); 

    return false; 
} 




<SearchView 
    android:id="@+id/search_view_neue" 
    android:layout_width="match_parent" 
    android:layout_height="60dp" 
    android:layout_marginLeft="40dp" 
    android:layout_marginRight="40dp" 
    android:background="@drawable/border_searchview" 
    android:maxWidth="540dp" 
    android:queryHint="Neue Dokumente suchen" > 
</SearchView> 

Tak, zachowanie widoku wyszukiwania jest, że klawiatura otwiera klikając na szukanie button.Now mogę szukać czegoś. Czy można przeprowadzić wyszukiwanie, klikając w dowolnym miejscu w wyszukiwarce? Czy ktoś ma dla mnie przykład?

Najlepsze życzenia Christine

+0

jest dobra odpowiedź http://stackoverflow.com/questions/14602807/android-how-to-detect-click-on-custom-searchview-element –

Odpowiedz

0

ja nie rozumiem, dlaczego trzeba ustawić OnClickListener na nim. Klikając na SearchView zaktualizujesz kursor tekstowy. Aby wykonać wyszukiwanie, musisz wykonać edycję klawiatury IME. Jeśli kliknięcie go wykonałoby wyszukiwanie, niemożliwe byłoby zmienienie kursora itp. Zasadnym błędem jest wykonanie czegoś innego niż ustawianie kursora w polach tekstowych.

O ile pamiętam - nie trzeba ukrywać klawiatury w OnQueryTextListener. Powinno to hite automatycznie. Uchwyt wyszukiwanie w OnQueryTextSubmit

search with Sherlock ActionBar SearchView setOnKeyListener

7

udało mi się to zrobić w następujący sposób:

konfiguracji widoku wyszukiwania na click słuchacza

mSearchView.setOnClickListener(this); 

Złap zdarzenie onClick:

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.searchView: 
      mSearchView.onActionViewExpanded(); 
      break; 
    } 
} 

W ten sposób klawiatura i przycisk ch są aktywowane, jeśli klikniesz w innym miejscu na pasku wyszukiwania.

+0

odpowiedź ta może być oznaczona jako akceptowane –

0

muszę sugerują użycie setOnSearchClickListener listner wykryć SearchView kliknięcie jako Według Androida docs:

setOnSearchClickListener

void setOnSearchClickListener (View.OnClickListener słuchacz)

Ustawia słuchacza poinformować kiedy przycisk wyszukiwania jest wciśnięty.

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater menuInflater = getMenuInflater(); 
    menuInflater.inflate(R.menu.orders_menu, menu); 
    MenuItem searchItem = menu.findItem(R.id.action_search); 
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 

    if (searchView != null) { 
     searchView = (SearchView) searchItem.getActionView(); 
     searchView.setOnSearchClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       //perform your click operation here 
      } 
     }); 
    return true; 
} 
2

Będzie to zrobić dokładnie to, co próbujesz osiągnąć. setIconified(false) będzie trzymał ikonę krzyżyka na tym końcu SearchView, aby użytkownik mógł nadal anulować to samo, co kliknięcie lupy.

searchView.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     searchView.setIconified(false); 
    } 
});