2013-02-13 10 views
5

Ho SearchView che assomiglia a questo: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> 

Così, il comportamento della visualizzazione di ricerca è, che la tastiera si apre facendo clic sulla ricerca button.Now posso cercare qualcosa. È possibile effettuare una ricerca facendo clic su searchview ovunque? Qualcuno ha un esempio per me?

Auguri Christine

+0

v'è una buona risposta http://stackoverflow.com/questions/14602807/android-how-to-detect-click-on-custom-searchview-element –

risposta

0

non vedo il motivo per cui è necessario impostare OnClickListener su di esso. Cliccando su un SearchView si aggiornerà il cursore del testo. Per eseguire la ricerca hai un'azione IME sulla tastiera. Se facendo clic su di esso si eseguirà la ricerca, sarebbe impossibile cambiare il cursore, ecc. È generalmente un comportamento sbagliato fare qualcosa di diverso dal cursore di messa a fuoco/aggiornamento nei campi di testo.

Per quanto mi ricordo - non è necessario nascondere la tastiera in OnQueryTextListener. Dovrebbe hite automaticamente. Maneggiare la ricerca in OnQueryTextSubmit

search with Sherlock ActionBar SearchView setOnKeyListener

7

sono riuscito a fare questo nel modo seguente:

Imposta la vista di ricerca al clic ascoltatore

mSearchView.setOnClickListener(this); 

Cattura l'evento onClick:

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

In questo modo la tastiera e scottano ch si attivano se si fa clic su antwhere sulla barra di ricerca.

+0

questa risposta potrebbe essere contrassegnato come accettato –

0

devo suggerire di utilizzare setOnSearchClickListener listner per rilevare SearchView click come Secondo Android docs:

setOnSearchClickListener

setOnSearchClickListener void (View.OnClickListener ascoltatore)

Imposta un ascoltatore per informare quando il bottone di ricerca è premuto.

@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

Questo farà esattamente quello che stai cercando di raggiungere. setIconified(false) manterrà l'icona a forma di croce a questa estremità del SearchView in modo che l'utente possa ancora annullare allo stesso modo come se si fosse fatto clic sulla lente di ingrandimento.

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