私はActionBarSherlockライブラリを使用して、ハニカム以前のバージョンでアクションバーを取得しています。アクションバー メニューが xml の下から膨張するアクティビティがあります。
menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/action_bar_search"
android:icon="@drawable/ic_search"
android:showAsAction="always|collapseActionView" android:title="Search"
android:actionLayout="@layout/layout_search">
</item>
</menu>
以下はactionLayoutです
> layout_search.xml
<?xml version="1.0" encoding="utf-8"?>
<AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/autoCompText_action_bar_search"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:cursorVisible="true"
android:imeOptions="flagNoExtractUi"
android:inputType="text"
android:textColor="@color/color_action_bar_text"
android:textCursorDrawable="@android:color/black"
android:background="@drawable/textfield_bg_activated_holo_dark"
/>
メニュー項目の Expand イベントと Collapse イベントをリッスンする OnActionExpandListener も実装しました。以下は OnActionExpandListener の私の実装です
private OnActionExpandListener searchActionExpandListener = new OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
/* This is done so that requestFocus() can popup the softkeyboard.
* Else, no softkeyboard is popped up
*/
edtTextSearch.post(new Runnable() {
@Override
public void run() {
edtTextSearch.requestFocus();
mImm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mImm.showSoftInput(edtTextSearch, InputMethodManager.SHOW_IMPLICIT);
}
});
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
mImm.hideSoftInputFromWindow(edtTextSearch.getWindowToken(), 0);
return true;
}
};
これで、アクション バーの検索ボタンを押すと、actionLayout が表示され、ソフトキーボードもポップアップしてフォーカスされます。今まですべて正常に動作しています。しかし、戻るキー (電話のハード キー) を押すと、アクション ビューが折りたたまれます。私がしたいのは、戻るキーを押してソフトキーボードを非表示にし(表示されている場合)、アクションビューを折りたたまないことです。誰でも私を助けてもらえますか?