Активность с SearchView закрыть с левой стрелкой - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть HomeActivity, и я запускаю SearchActivity, который содержит SearchView на панели инструментов.

Я установил SearchView для первоначального расширения, используя это: search.ExpandActionView (); .
Это код SearchActivity в C#, но не проблема, если вы можете помочь в java / kotlin ...

 public class SearchActivity : AppCompatActivity
 {
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.activity_search);
        var toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
        SetSupportActionBar(toolbar);
        this.SupportActionBar.SetDisplayHomeAsUpEnabled(false);
        this.SupportActionBar.SetHomeButtonEnabled(false);
    }

    public override bool OnCreateOptionsMenu(IMenu menu)
    {
        MenuInflater.Inflate(Resource.Menu.menu_search_places, menu);
        IMenuItem search = menu.FindItem(Resource.Id.action_search_places);
        search.ExpandActionView();
       // var searchView = (Android.Support.V7.Widget.SearchView)search.ActionView;
        return true;
    }
}

Это menu_search_places. xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">
  <item
     android:id="@+id/action_search_places"
     android:icon="@android:drawable/ic_menu_search"
     app:showAsAction="always|collapseActionView"
     app:actionViewClass="android.support.v7.widget.SearchView"
     android:title="Search for a place"/>
</menu>

Кажется, что верхняя левая стрелка связана с SearchView - она ​​сворачивает SearchView.

Также onOptionsItemSelected не срабатывает

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
    case android.R.id.home:
    //
    default:
        return super.onOptionsItemSelected(item);
}

Можем ли мы изменить это поэтому когда я нажимаю стрелку, чтобы закрыть SearchActivity вместо сворачивания SearchView ?

1 Ответ

0 голосов
/ 04 апреля 2020

Вы можете реализовать setOnActionExpandListener в пункте меню поиска внутри OnCreateOptionsMenu. Таким образом, вы можете прослушивать изменения, когда представление поиска сворачивается или разворачивается.

searchItem.setOnActionExpandListener(object : MenuItem.OnActionExpandListener {
        override fun onMenuItemActionCollapse(item: MenuItem): Boolean {
            // do something
            return true
        }

        override fun onMenuItemActionExpand(item: MenuItem): Boolean {
            // do something
            return true
        }
    })
...