Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
8 / 8 / 12
Регистрация: 16.05.2014
Сообщений: 151

Реализация поиска в ActionBar

26.12.2017, 20:15. Показов 2208. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Я пробую сделать поиск в ActionBar-е. Читал много статей, в итоге рабочих осталось два варианта:
1) указать в макете элемента меню app:actionViewClass="android.widget.Sear chView"
2) каким то образом использовать onSearchRequested()

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

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
        // обработка событий в первом случае
        // Get the SearchView and set the searchable configuration
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
        // Assumes current activity is the searchable activity
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
        searchView.setIconifiedByDefault(true); 
 
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener()
        {
            @Override
            public boolean onQueryTextSubmit(String query)
            {
                return false;
            }
 
            @Override
            public boolean onQueryTextChange(String newText)
            {
                Log.i(LOG_TAG,newText);
                showResults(newText);
                return false;
            }
        });
Во втором случае я вызываю onSearchRequested таким образом:

Java
1
2
3
4
5
6
7
8
9
10
11
12
    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        switch (item.getItemId())
        {
            case R.id.action_search:
                onSearchRequested();
                return true;
            default:
                return true;
        }
    }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.12.2017, 20:15
Ответы с готовыми решениями:

Реализация меню требует API level 9, а actionbar-11. Что выбрать?
Реализация меню требует API level 9, а actionbar - 11. Разрываюсь на части из-за того, что не могу выбрать. Если реализовать менюшку, то...

Реализация поиска в приложении
Есть страница на которой можно найти статью, но все статьи находятся на сервере. Как лучше реализовать связь между приложением и сервером?

SearchView или своя реализация поиска (UI)
Требуется реализовать интерфейс для поиска. В ActionBar имеется SearchView, который отправляет запрос на сервер, после этого приходит...

2
5 / 5 / 3
Регистрация: 07.04.2015
Сообщений: 27
28.12.2017, 17:41
Вот что нагуглилось. Чтобы поменять иконку у SearchView, можно прописать параметры в xml:

Для таргет версии ниже 21

XML
1
2
3
4
5
<android.support.v7.widget.SearchView
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    app:searchIcon="@drawable/ic_search_white_24dp"
    app:closeIcon="@drawable/ic_clear_white_24dp" />
Для таргет версии выше 21

XML
1
2
3
4
5
<SearchView
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:searchIcon="@drawable/ic_search_white_24dp"
    android:closeIcon="@drawable/ic_clear_white_24dp" />
По поводу второго пункта - в манифесте добавлены meta-data и xml searchable?

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<meta-data
    android:name="android.app.default_searchable"
    android:value=".SearchableActivity" />
 
<activity
    android:name=".SearchableActivity"
    android:label="@string/app_name"
    android:launchMode="singleTop" >
    <intent-filter>
        <action android:name="android.intent.action.SEARCH" />
    </intent-filter>
 
    <meta-data
        android:name="android.app.searchable"
        android:resource="@xml/searchable" />
</activity>
0
8 / 8 / 12
Регистрация: 16.05.2014
Сообщений: 151
28.12.2017, 20:28  [ТС]
Цитата Сообщение от AsfaltM Посмотреть сообщение
По поводу второго пункта - в манифесте добавлены meta-data и xml searchable?
Дело в том что поле ввода появляется как и надо(после вызова onSearchRequested()), я просто не знаю как слушать его события. Вот манифест:
Java
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
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.darkos.mynotepad">
 
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_lauch"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
            </intent-filter>
            <meta-data
                android:name="android.app.searchable"
                android:resource="@xml/searchable" />
        </activity>
        <activity android:name=".Editer"></activity>
    </application>
 
</manifest>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.12.2017, 20:28
Помогаю со студенческими работами здесь

Оформление actionbar
Здравствуйте, начал изучать android. Использую netbeans ide 8.1, android 4.2.2 Хочу сделать приложение с material design Пытался...

SearchView в ActionBar
Всем привет! Добавил в ActionBar фрагмента SearchView, но он не появляется, пустой ActionBar. С добавлением SearchView в ActionBar активити...

Не создаётся ActionBar
В манифесте указано android:minSdkVersion=&quot;11&quot;. layout &quot;main.xml&quot; создал: &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;menu...

Глюки с ActionBar
Проблема в том, что я создаю новый проект. Не вношу никаких изменений. И по какой-то причине в AcvtionBar не отображается иконка...

ActionView и ActionBar
Здравствуйте! Подскажите, пожалуйста, по задаче - необходимо при нажатии на кнопку Поиск на ActionBar вывести TextView с кнопкой Save, при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru