Я реализую интерфейс поиска в своем приложении с помощью виджета поиска. Я делаю не планируют поддерживать любой уровень API < 11 (Honeycomb). В операции поиска я хотел бы переопределить onKeyDown()
, чтобы развернуть виджет поиска, когда пользователь нажимает клавишу поиска и сводит к минимуму его при отправке текста запроса.Android: menuItem.expandActionView() на уровне API <14
Это легко осуществляется с помощью вызова:
@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. Как упоминалось ранее, Я хочу предоставить поддержку еще в 11-м уровне API, и у меня возникают проблемы с достижением такой же функциональности, не вызывая новых методов API.
Я пробовал:
@Override
public boolean onSearchRequested() {
searchView.setIconifiedByDefault(false);
//and also called
searchView.requestFocusFromTouch();
}
но просто ничего не делать вообще (чем-либо я имею в виду searchwidget остается разрушился, если он уже был
Поскольку я держу ссылку на. MENUITEM, я также пытался:
@Override
public boolean onSearchRequested() {
SearchActivity.this.onOptionsItemSelected(mSearchMenuItem);
}
, но это ничего не делать вообще либо, последняя вещь, которую я попытался было:
@Override
public boolean onSearchRequested() {
searchMenu.getActionView().performClick();
return false;
}
Но это тоже нехорошо.
Любые идеи относительно того, что я мог сделать, чтобы обеспечить ту же функциональность, что и menuItem.collapseActionView()
, и menuItem.expandActionView()
без необходимости жертвовать совместимостью?
Это должен быть принятый ответ. – dtrejogo