検索ウィジェットを使用して、アプリケーションに検索インターフェイスを実装しています。11未満のAPIレベル(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();
}
しかし、それはまったく何もしませんでした(つまり、searchwidgetがすでに折りたたまれている場合は、折りたたまれたままです。
menuItemへの参照を保持しているので、次のことも試しました。
@Override
public boolean onSearchRequested() {
SearchActivity.this.onOptionsItemSelected(mSearchMenuItem);
}
しかし、それもまったく何もしませんでした。最後に試したのは次のとおりです。
@Override
public boolean onSearchRequested() {
searchMenu.getActionView().performClick();
return false;
}
しかし、それもまた行きません。
互換性を犠牲にすることなく、同じ機能menuItem.collapseActionView()
を提供するために私ができることについて何かアイデアはありますか?menuItem.expandActionView()