В поисках идей для реализации SearchView в Android в рамках приложения с одним действием - PullRequest
0 голосов
/ 30 октября 2019

Ищете идеи для реализации SearchView в Android. Я использую подход с одним видом деятельности в моем приложении. Я следил за этим документом: https://developer.android.com/guide/topics/search/search-dialog

Но это добавляет накладные расходы на добавление новой активности.

В настоящее время в моем приложении есть несколько экранов, и только на одном экране мне нужно показать SearchView. .

1 Ответ

1 голос
/ 31 октября 2019

Нет необходимости в новом действии.

Создайте menu.xml с помощью SearchView:


<?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/action_search"
            android:icon="@drawable/ic_search"
            android:title="@string/search"
            android:menuCategory="secondary"
            app:showAsAction="ifRoom|collapseActionView"
            app:actionViewClass="androidx.appcompat.widget.SearchView"/>
</menu>

Затем во фрагменте вы хотите отобразить его:

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setHasOptionsMenu(true)
    }

    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
        inflater.inflate(R.menu.your_menu_with_search, menu)
        setupSearchView(menu.findItem(R.id.action_search).actionView as SearchView)
    }


    private fun setupSearchView(searchView: SearchView) {
        searchView.queryHint = "Your option query hint"
        searchView.setOnQueryTextListener(object: SearchView.OnQueryTextListener {
            override fun onQueryTextChange(newText: String?): Boolean {
                TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
            }

            override fun onQueryTextSubmit(query: String?): Boolean {
                TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
            }

        })
        }
    }

Я предполагаю, что вы настроили navController с помощью панели инструментов, если нет, я сделаю ссылку на документацию, чтобы сделать это, так как это выходит за рамки вашего вопроса, удачи.

...