Я использую прекрасную библиотеку Jake Wharton ActionBarSherlockи имею сворачиваемое представление действия поиска. Я хочу, чтобы всплывающая экранная клавиатура отображалась при расширении представления действия поиска.
Мы можем прочитать рекомендуемый способ сделать это в DialogFragment в сообщении блога Google " Using DialogFragments" (немного изменено для удобства чтения).
// Show soft keyboard automatically
mEditText.requestFocus();
int mode = WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE;
getDialog().getWindow().setSoftInputMode(mode);
Похоже, это не работает при развертывании и запросе фокуса на сворачиваемом представлении действия EditText. В настоящее время у меня есть это.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.my_activity, menu);
MenuItem menuItem = menu.findItem(R.id.menu_search);
final EditText searchText = (EditText) menuItem.getActionView();
menuItem.setOnActionExpandListener(new OnActionExpandListener() {
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
return true; // Return true to collapse action view
}
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
searchText.requestFocus();
int mode = WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE;
getWindow().setSoftInputMode(mode);
return true; // Return true to expand action view
}
});
}
Вот мое определение пункта меню в xml-файле меню my_activity:
... и макет действия collapsible_edittext
Предостережение: я не хочу принудительнопрограммную клавиатуру. Когда у пользователя есть аппаратная клавиатура, запрашивающая фокус, этого достаточно.
Есть какие-нибудь мысли?