Android SearchManager: Как установить минимальное количество символов для включения поиска

Я использую Android SearchManager. Я определил все необходимые атрибуты в searchable.xml.

Теперь я хотел бы установить ограничение на минимальное количество символов, прежде чем пользователь сможет выполнить поиск. По умолчанию минимум равен 1.

Как это можно изменить?

Спасибо.

2 ответа

Решение

Это следующий атрибут в searchable.xml

<searchable xmlns:android="http://schemas.android.com/apk/res/android"
  ...
  android:searchSuggestThreshold="2"
  >
</searchable>

Если onQueryTextSubmit возвращает false, тогда выполняется только действие поиска, мы можем ограничить число символов следующим образом

    @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.menu_home, menu);

        // Get the SearchView and set the searchable configuration
        SearchManager searchManager = (SearchManager)getActivity().getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
        // Assumes current activity is the searchable activity
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
        //searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default

        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                return query.length()<4; //number of char to limit
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                return false;
            }
        });

    }
Другие вопросы по тегам