#android #android-widget
#Android #android-виджет
Вопрос:
Я использую виджет SearchView (новый в Honeycomb). Я могу установить начальный текст с помощью setQuery, это работает.
Но есть ли какой-нибудь способ выделить весь текст внутри (аналогично EditText.selectAll)?
Я хотел бы предоставить пользователю предустановленный текст из предыдущего поиска, но простой способ ввести новый текст без необходимости удалять старый.
Ответ №1:
Вам просто нужно захватить внутренний EditText, а затем делать все, что вы хотите.
EditText edit = (EditText)searchView.findViewById(R.id.search_src_text);
edit.selectAll();
Ответ №2:
Немного поздно, но у меня была похожая проблема.
Я хотел бы предоставить пользователю предустановленный текст из предыдущего поиска, но простой способ ввести новый текст без необходимости удалять старый.
Я нашел решение, которое сработало для меня. Вам просто нужно получить доступ к внутреннему EditText, а затем выделить весь текст обычным способом.
Для этого попробуйте что-то вроде следующего. Пожалуйста, обратите внимание, что мой код написан на c #, а не на Java, но похож.
int id = searchView.Context.Resources.GetIdentifier("android:id/search_src_text", null, null);
EditText editText = searchView.FindViewById<EditText>(id);
editText.SelectAll();
В Java это должно быть что-то вроде этого:
int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
EditText editText = (EditText) searchView.findViewById(id);
editText.selectAll();
Я только что протестировал его на уровне API 15! Но я думаю, что это работает и на более низких уровнях.
Ответ №3:
То, что вы хотите сделать, хорошо работает на ПК, но не очень удобно на сенсорных устройствах.
Я бы использовал поставщика предложений, чтобы позволить пользователю повторно использовать недавние поиски, возможно, с включенным уточнением запросов.