Поиск SearchView в панель инструментов

SearchView

Добавление SearchView поиска в панель инструментов

Для того чтобы добавить поиск в панель инструментов необходимо сначала создать файл ресурсов в res/menu/options_menu.xml, либо изменить существующий аналогичный файл для вашего активити.

Поместите в этот файл следующий текст:

<?xml version="1.0" encoding="utf-8"?>
<menu 
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/search_search"
          android:title="@string/search_title"
          android:icon="@drawable/ic_search"
          android:showAsAction="collapseActionView|ifRoom"
          app:actionViewClass="android.support.v7.widget.SearchView" />
</menu>

 

Создайте файл ресурса в res/xml/searchable.xml и вставьте следующий код:

<?xml version="1.0" encoding="utf-8"?>
<searchable
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:hint="@string/search_text"
   android:label="@string/app_name"/>

 

В манифест привяжите к активити, который будет в панели инструментов будет отображать поиск, searchable:

<application ... >

   <activity ... >

         <meta-data
           android:name="android.app.searchable"
           android:resource="@xml/searchable"/>

   <activity>

</application>

 

Добавьте следующий код в ваш активити:

import android.app.SearchManager;
import android.support.v7.widget.SearchView;

...

@Override
public boolean onCreateOptionsMenu( Menu menu )
{
    getMenuInflater().inflate( R.menu.options_menu, menu );

    SearchManager searchManager = ( SearchManager ) getSystemService( Context.SEARCH_SERVICE );
    SearchView searchView =    ( SearchView ) menu.findItem( R.id.menu_search ).getActionView();
    searchView.setSearchableInfo( searchManager.getSearchableInfo( getComponentName() ) );

    // Задать действия
    searchView.setOnQueryTextListener(
                new SearchView.OnQueryTextListener()
                {

                    @Override
                    public boolean onQueryTextSubmit( String s )
                    {
                        // Действия после нажатия ввод
                        return false;
                    }
        
                    @Override
                    public boolean onQueryTextChange( String s )
                    {
                        // Действия после каждого нажатия
                        return false;
                    }

                }
    );

    return true;
}

Официальная документация

Добавить комментарий

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