我有一个带有搜索字段的ActionBar。在搜索栏中,我有“清除”图标,如果按下它,将会调用clearFilterText()
。
我创建了这样的搜索字段:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuUtil.addCommonMenuItems(this, menu);
getSupportMenuInflater().inflate(R.menu.guide_list_menu, menu);
MenuItem searchItem = menu.findItem(R.id.search_menu_item);
searchItem.setActionView(createSearchView());
searchItem.expandActionView();
searchItem.setVisible(true);
return true;
}
private View createSearchView() {
LayoutInflater inflater = LayoutInflater.from(getSupportActionBar().getThemedContext());
searchText = (EditText) inflater.inflate(R.layout.search_view, null);
searchText.setOnTouchListener(
new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// ...
clearFilterText();
// ...
});
// ...
return searchText;
}
问题在于TouchBistener被ActionBar覆盖。正好覆盖它的地方是com.android.internal.view.menu.ActionMenuPresenter getItemView()
是否有任何解决方案可以使TouchListener工作?