Хотите прямо сейчас получить бесплатный видеокурс по программированию для начинающих?

Поиск по WebView (Android)

Май 6, 2013

Привет всем. Я сейчас пишу небольшое приложение на Android.

Бился только что над одной проблемой и благополучно ее решил. Как правило на русском языке документации по разрабоке на android мало, буду эту ситуацию исправлять по мере возможности.

Сейчас будем делать поиск по компоненту WebView с выделением найденного текста.
Стандартно создаем новый проект. Кидаем на форму сначала LinearLayout(vertical) внутрь него кидаем LinearLayout(horisontal). Внутри LinearLayout(horisontal) располагаем EditText и две кнопки. Это будет панель поиска.
Чуть ниже LinearLayout(horisontal) располагаем WebView.

Картина должна быть примерно такая:
Untitled-3

Надписи на кнопках можете задавать какие захотите.
Далее переключаемся в код который отвечает за это окно.
Объявляем переменные:

1
2
3
private WebView web; //для обращения к компоненту webView1
Button next, perv, search; // для обращения к кнопкам поиска
EditText editsearch; // для обращения к тексту который для поиска

далее в обработчике onCreate присваиваем значения нашим переменным:

1
2
3
4
5
6
7
8
9
web = (WebView) findViewById(R.id.webView1);
web.loadUrl("http://programmerinfo.ru/");
next = (Button) findViewById(R.id.next);
next.setOnClickListener(this);
perv = (Button) findViewById(R.id.perv);
perv.setOnClickListener(this);
search = (Button) findViewById(R.id.search);
search.setOnClickListener(this);
editsearch = (EditText) findViewById(R.id.editsearch);

Далее пропишем реакцию на нажатие кнопок:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
@Override
public void onClick(View v) {
// ищем следующий элемент
if (v.getId()== R.id.next) {
web.findNext(true);
}
// ищем предыдущий элемент
if (v.getId()== R.id.perv) {
web.findNext(false);
};
// нажатие на кнопку поиск, поиск всех элементов
if (v.getId()== R.id.search) {
int i; //число найденных элементов
i= web.findAll(editsearch.getText().toString()); //поиск всех элементов
// вывод количества найденных элементов
Toast.makeText(getApplicationContext(), "Found "+i+" results !", Toast.LENGTH_SHORT).show();
// подсвечивание, выделение элементов поиска
try
{
Method m = WebView.class.getMethod("setFindIsUp", Boolean.TYPE);
m.invoke(web, true);
}
catch (Throwable ignored){}
web.setSelected(true);
web.findNext(true);
};
}

Особое внимание обратите на код

1
2
3
4
5
6
 try
{
Method m = WebView.class.getMethod("setFindIsUp", Boolean.TYPE);
m.invoke(web, true);
}
catch (Throwable ignored){}

Без него выделения искомого текста происходить НЕ будет.
На этом все.

Если остались вопросы — вот исходник

Пока!



10 Комментариев к записи Поиск по WebView (Android)

  1. Александр on 06.05.2013 at 05:23

    На всякий случай скачал, но пробовать буду на досуге.
    В принципе на своём планшетнике Андроид только в пути использую.
    А файлы ставлю на флешку для просмотра.
    Ну конечно почту и свои статьи на сайтах, и
    просто деловые заготовки.
    Было-бы программ необходимый комплект для Андроида, то его можно- бы поставить на системный блок.
    Только вот не знаю как сантивирусником для Андроида, тот что в комплекте слабоват, для «Нашистов» под крышей ФСБ-шников

  2. Александр on 06.05.2013 at 05:43

    Привет Артём,
    не вижу ссылок на социальные сети
    Пишешь о рекламе, а ссылки что забыл.
    На хакерские, спутниковые сайты захожу, чистильщики для реестров, чертилки с кряками, столько народу там много бывает ключи, для прог, сами Проги и прочие нужные драйвера кряки.
    Все это привлекает, там продажами занимаются,
    вот это и привлекает народ.
    ну конечно секс, политика и происшествия, слухи о знаменитостях
    Из контакта народ уходит

    • Jurius on 25.07.2013 at 12:12

      Интресно какое отношение имеет этот камент ко всему сказаному выше?

  3. Alex on 06.05.2013 at 09:12

    судя по коду может быть ОДНОВРЕМЕННО поиск предыдущего, поиск следующего и поиск всех….. Это так?

  4. Юрий on 01.09.2013 at 23:00

    А снять выделение?..

  5. Валерий on 19.02.2017 at 20:13

    Здравствуйте, поиск некорректно немного работает, при нажатии на «поиск» слова подсвечиваются оранжевым не в порядке очереди, может и 10-е подсветить сначала, тогда как первые 9 — желтым. Как это исправить?

Добавить комментарий для Валерий Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Поддержите проект

Хит продаж:

Случайный анекдот

Моя вторая книга

Что это???

Программирование для Android:

Мы вконтакте

Помощь сайту

Понравился сайт? Он сильно нуждается в раскрутке.

Чтобы помочь в раскрутке - опубликуйте ссылку на сайт (или любую его страницу) на любом другом сайте в интернете. Тогда сайт станет чуточку популярнее.

Или просто нажмите на кнопки социальных сетей которые стоят в конце каждой статьи

Вместе мы сможем сделать программирование более популярным и более понятным для всех!

Заранее спасибо!
Артём Кашеваров.