Как реализовать панель поиска, например приложение gmail, в Android?

Я пытаюсь реализовать функцию Поиск в своем приложении для Android, аналогично последнему приложению Gmail (значок поиска на панели действий).

введите здесь описание изображения

При нажатии на значок «Поиск» панель действий превращается в поле поиска с кнопкой «Назад» слева и кнопкой микрофона справа. Я хочу иметь такой же компонент в своем приложении.

Есть ли какая-нибудь библиотека или учебник для этого?

Возможно ли поддерживать этот тип поиска по материальному дизайну и в версиях, отличных от леденцов. ?


person Saran    schedule 19.03.2015    source источник
comment
Вы можете с SearchView. Добавьте SearchView в какой-либо макет, добавьте макет на панель инструментов (android.support.v7.widget.Toolbar, также добавьте android.support.v7 в свой проект), установите панель инструментов как supportActionBar.   -  person androidEnthusiast    schedule 19.03.2015
comment
@н.м. : Нет, я не могу получить этот стиль в представлении поиска по умолчанию, и я хочу поддерживать его во всех версиях Android.   -  person Saran    schedule 19.03.2015
comment
stackoverflow.com/questions/27556623/   -  person Duos    schedule 25.01.2020


Ответы (3)


Эта библиотека для этого, единственное, что она не делает, это рябь, но я ожидаю, что вы могли бы легко реализовать их с другими ресурсами:

https://github.com/Quinny898/PersistentSearch

Вот изображение проделанной в нем работы.

введите здесь описание изображения

person Muralidharan Kathiresan    schedule 19.03.2015
comment
указанная выше библиотека устарела... официально. - person Narendra Baratam; 11.02.2017

я не знаю о версии с леденцами, но если вам нужен такой поиск, вы можете добавить это «main_activity_actions» на свою панель действий:

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

и переопределите это в своей Java:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main_activity_actions, menu);
    MenuItem searchItem = menu.findItem(R.id.action_search);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
    // Configure the search info and add any event listeners
    ...
    return super.onCreateOptionsMenu(menu);
}

больше информации здесь, это часть словаря, но та же идея, увидимся!

person Carlos Carrizales    schedule 19.03.2015

Есть два стандартных API, предоставляемых Google, которые называются Search Dialog и Search View. Вы можете использовать один или другой — или оба — для реализации желаемого поведения. Это уже дает вам многое из того, что вы хотите. По следующей ссылке есть руководство по этому вопросу: http://developer.android.com/guide/topics/search/search-dialog.html

person E. Fernandes    schedule 13.05.2015
comment
ваш пример слишком расплывчатый. Я следовал этому руководству и не получил форму поиска Gmail. - person aurelianr; 26.10.2018