android - 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 时,我们可以修改它吗?
解决方案
您可以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
}
})
推荐阅读
- php - 大量 cURL 请求停止网站执行
- android - 如何在事件成功时更新firebase列的值
- java - 使用对象锁定参数放置对象请求需要 AWS 签名版本 4
- google-cloud-platform - Google StackDriver 调试器中的应用程序类路径无效
- php - 为什么 imagecrop 会删除透明度?
- javascript - 如何在javascript中使用动画处理竞争条件
- javascript - Vue.js - 是否可以使用 Javascript 动态导入从另一台服务器加载组件?
- c# - 在后台等待异步方法有什么作用?
- c# - UWP 以编程方式绑定动态表单
- python - 如何在 urlretrieve 中使用变量代替目标文件