首页 > 解决方案 > SearchView 的 Activity 用左箭头关闭

问题描述

我有一个 HomeActivity,我在工具栏中启动了一个包含 SearchView 的 SearchActivity。

我将 SearchView 设置为最初使用此扩展:search.ExpandActionView(); .
这是 C# 中的 SearchActivity 代码,但如果您可以在 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 时,我们可以修改它吗?

标签: androidandroid-layoutsearchview

解决方案


您可以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
        }
    })

推荐阅读