Я использую ActionBarCompat и QuickAction (https://github.com/lorensiuswlt/NewQuickAction также показано на http://www.londatiga.net/it/how-to-create-quickaction-dialog-in-android/) в моем приложении для Android.Поиск в Android-браузере отображает меню QuickAction, но перестает получать события на клавиатуре
Справа от панели действий есть значок традиционного поиска, пользователь прикасается к нему, окно поиска расширяется и пользователь может вводить запросы.
У меня есть требование, чтобы вместо поиска последних запросов всплывающее окно отображало два элемента: «поиск TYPED_TEXT в foo» и «поиск TYPED_TEXT в строке», поэтому вместо использования поиска по умолчанию всплывает (так что я выиграл «нужно иметь дело с контент-провайдерами и высмеивать курсор, чтобы показать те же два элемента).
в моем SearchView.OnQueryTextListener
, onQueryTextChange
переопределяется, поэтому, когда пользователь вводит не менее 3 символов, я установил QuickAction и покажу его.
SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String newText) {
Context context = MyActivity.this.getBaseContext();
LayoutInflater inflator = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rootView = inflator.inflate(R.layout.quickaction_popup, null);
rootView.measure(0, 0);
QuickActionList action = new QuickActionList(MyActivity.this,
QuickActionList.HORIZONTAL, new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
action.addActionView(rootView);
action.show(mSearchView);
// [1]. I'll explain this comment line below.
return false; // I tried with return true as well to indicate I've consumed the event here.
}
}
Проблема заключается в следующем: после быстрого действия я ничего не могу напечатать. Я должен снова коснуться вида поиска, чтобы ввести другой символ.
Где я комментировал с // [1]
, я пытался изменить фокус с setFocusable
+ requestFocus
, setFocusableInTouchMode
requestFocus
+ и даже setFocusable
+ setFocusableInTouchMode
+ requestFocus
, но не успех на всех. Вот фрагмент кода, который заменил // [1]
:
mSearchView.setFocusable(true);
mSearchView.setFocusableInTouchMode(true);
boolean gotFocus = mSearchView.requestFocus();
Log.d("DOUG", Boolean.toString(gotFocus));
журнал показывает gotFocus = true
, но я до сих пор не может набрать. Я вижу синюю полосу, показывающую, что она готова принять вход, но она не мигает. Мягкая клавиатура продолжает показывать, но когда я печатаю, это похоже на то, что я набираю что-то не редактируемое. Вероятно, QuickAction захватывает событие софт-ключа, но я не мог найти, как этого избежать.
Любые идеи о том, как решить это или обходное решение?
Благодаря