我正在使用搜索小部件在我的应用程序上实现搜索接口。我不打算支持API级别低于11(Honeycomb)。在搜索活动中,我想重写
要实现这一点,只需调用以下代码:
问题在于,折叠和展开都是在API 14级引入的。正如之前提到的,我想支持尽可能早的API,甚至是API 11级,但我在不调用新API方法的情况下难以实现相同的功能。
我尝试过:
但是这也没有任何作用,我尝试的最后一件事是:
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,甚至是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()
相同的功能,而无需牺牲兼容性吗?