我正在努力寻找如何在Xamarin中实现这个Java代码。
我尝试了searchView.Close += delegate { };
,但它不起作用。
searchMI.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
Toast.makeText(getApplicationContext(), "MenuItem#onMenuItemActionExpand", Toast.LENGTH_SHORT).show();
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
Toast.makeText(getApplicationContext(), "MenuItem#onMenuItemActionExpand", Toast.LENGTH_SHORT).show();
return true;
}
});
答案 0 :(得分:2)
创建实现IMenuItemOnActionExpandListener
的自定义类。
class ExpandListener : Java.Lang.Object, IMenuItemOnActionExpandListener
{
public bool OnMenuItemActionCollapse(IMenuItem item)
{
return true;
}
public bool OnMenuItemActionExpand(IMenuItem item)
{
return true;
}
}
然后使用
将侦听器设置为menuitemsearchMI.SetOnActionExpandListener(new ExpandListener());
答案 1 :(得分:2)
感谢您的回答,它最初没有工作,我有一个例外
不支持使用menuitemcompat.setonactionexpandlistener()
我不得不这样做
在我的文件顶部:
using MenuItemCompat = Android.Support.V4.View.MenuItemCompat;
在创建搜索视图时在OnCreateOptionsMenu()中。
IMenuItem searchItem = menu.FindItem(Resource.Id.searchItem);
MenuItemCompat.SetOnActionExpandListener(searchItem, new ExpandListener(this));
最后是听众类
class ExpandListener : Java.Lang.Object, MenuItemCompat.IOnActionExpandListener
{
Context context;
public ExpandListener(Context pContext)
{
context = pContext;
}
public bool OnMenuItemActionCollapse(IMenuItem item)
{
//MyStuff with context
return true;
}
public bool OnMenuItemActionExpand(IMenuItem item)
{
//Stuff
return true;
}
}
答案 2 :(得分:0)
MenuItemCompat.SetOnActionExpandListener
不被弃用。因此,我的SearchView
的解决方案是首先在一个新类中实现IMenuItemOnActionExpandListener
:
public class OnActionExpandListener : Java.Lang.Object, IMenuItemOnActionExpandListener
{
public event EventHandler<IMenuItem> Collapse, Expand;
public bool OnMenuItemActionCollapse(IMenuItem item) {
Collapse?.Invoke(this, item);
return true;
}
public bool OnMenuItemActionExpand(IMenuItem item) {
Expand?.Invoke(this, item);
return true;
}
}
然后参加我的活动:
public override bool OnCreateOptionsMenu(IMenu menu) {
MenuInflater.Inflate(Resource.Menu.action, menu);
var item = menu.FindItem(Resource.Id.action_search);
var listener = new OnActionExpandListener();
listener.Expand += (s, e) => {
// ...
};
listener.Collapse += (s, e) => {
// ...
};
item.SetOnActionExpandListener(listener);
return base.OnCreateOptionsMenu(menu);
}