Android SearchView onclick

У меня есть searchView, который выглядит так:

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> 

Таким образом, поведение вида поиска состоит в том, что клавиатура открывается нажатием кнопки поиска. Теперь я могу что-то искать. Можно ли выполнить поиск, щелкнув по поисковому запросу в любом месте? У кого-нибудь есть пример для меня?

С наилучшими пожеланиями Кристина

Мне удалось сделать это следующим образом:

Настроить вид поиска на клик-слушателе

 mSearchView.setOnClickListener(this); 

Поймать событие onClick:

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

Таким образом, клавиатура и поиск активируются, если щелкнуть мышью на панели поиска.

Я не понимаю, почему вам нужно установить OnClickListener. Нажав на SearchView, вы обновите текстовый курсор. Для выполнения поиска у вас есть действие IME для клавиатуры. Если щелкнуть по нему будет выполнять поиск, было бы невозможно изменить курсор и т. Д. В общем случае неправильное поведение заключается в том, чтобы сделать что-то еще, чем курсор фокуса / обновления в текстовых полях.

Насколько я помню – вам не нужно скрывать клавиатуру в OnQueryTextListener. Он должен автоматически скрываться. Обращайтесь с поиском в OnQueryTextSubmit

Поиск с помощью Sherlock ActionBar SearchView setOnKeyListener

Я должен предлагать использовать setOnSearchClickListener listner для обнаружения SearchView в соответствии с документами Android:

setOnSearchClickListener

Void setOnSearchClickListener (прослушиватель View.OnClickListener)

Устанавливает прослушиватель для информирования при нажатии кнопки поиска.

 @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; }