我正在使用搜索小部件在我的应用程序上实现搜索界面。我不打算支持任何 API 级别 < 11 (Honeycomb)。在搜索活动中,我想覆盖onKeyDown()
以在用户按下搜索键时展开搜索小部件,并在提交查询文本时将其最小化。
这很容易通过调用来完成:
@Override
public boolean onSearchRequested() {
if (mSearchMenuItem != null) {
mSearchMenuItem.expandActionView();
}
return false;
}
并在提交查询时:
searchView.setOnQueryTextListener(new OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
//Do nothing, results for the string supplied are already shown.
//Just collapse search widget
mSearchMenu.collapseActionView();
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
//do other stuff
return false;
});
问题是在 API 级别 14 中引入了折叠和展开。如前所述,我想提供早在 API 级别 11 的支持,但如果不调用新的 API 方法,我无法实现相同的功能。
我试过了:
@Override
public boolean onSearchRequested() {
searchView.setIconifiedByDefault(false);
//and also called
searchView.requestFocusFromTouch();
}
但这根本没有做任何事情(我的意思是如果搜索小部件已经折叠的话,它仍然是折叠的。
由于我保留了对 menuItem 的引用,因此我也尝试了:
@Override
public boolean onSearchRequested() {
SearchActivity.this.onOptionsItemSelected(mSearchMenuItem);
}
但这也没有做任何事情,我尝试的最后一件事是:
@Override
public boolean onSearchRequested() {
searchMenu.getActionView().performClick();
return false;
}
但这也是不行的。
关于我可以做些什么来提供与menuItem.collapseActionView()
并且menuItem.expandActionView()
不必牺牲兼容性的相同功能的任何想法?