СитуацииAndroid SearchView отключая весь экран не работает после выбора предложения
У меня есть SearchView в моей панели инструментов, которая отображает предложения для пользователей, когда они входят в поиске. Первоначально, в альбомной ориентации, все отлично работает с отображением экранной клавиатуры и видимым просмотром. Однако после того, как пользователь выберет предложение и попытается выполнить второй поиск, интерфейс поиска теперь находится в полноэкранном режиме, где поисковое покрытие закрыто, а предложения не видны.
Проблема
Как не я получаю не весь экран последовательно, независимо от того, сколько раз используется функция поиска?
Вещи, которые я попробовал
ImeOptions - flagNoFullscreen, flagNoExtractUi
код
MainFragment
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.favorites, menu);
MenuItem toggleItem = menu.findItem(R.id.toggle_shake);
setUpToggleShake(toggleItem);
MenuItem singleSearchItem = menu.findItem(R.id.search_restaurant);
setUpSingleSearch(menu, singleSearchItem);
}
private void setUpSingleSearch(final Menu menu, final MenuItem singleSearchItem) {
searchView = (SearchView) MenuItemCompat.getActionView(singleSearchItem);
searchView.setQueryHint("Search Restaurant");
searchView.setMaxWidth(10000);
searchView.setImeOptions(searchView.getImeOptions() | EditorInfo.IME_FLAG_NO_FULLSCREEN |
EditorInfo.IME_FLAG_NO_EXTRACT_UI);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
displaySuggestions(newText);
return false;
}
});
searchView.setOnSuggestionListener(new SearchView.OnSuggestionListener() {
@Override
public boolean onSuggestionSelect(int position) {
return false;
}
@Override
public boolean onSuggestionClick(int position) {
MatrixCursor cursor = (MatrixCursor)(searchView.getSuggestionsAdapter()
.getCursor());
if (cursor.moveToPosition(position)) {
String restaurantId = cursor.getString(cursor.getColumnIndex(
RestaurantTable.Cols.ID));
mFavoritesRestaurantListAdapter.setSingleSearchRestaurant(restaurantId);
mFavoritesRestaurantListAdapter.onSingleSearch();
}
searchView.clearFocus();
searchView.onActionViewCollapsed();
setItemsVisibility(menu, singleSearchItem, true);
return false;
}
});
searchView.setOnSearchClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setItemsVisibility(menu, singleSearchItem, false);
searchView.setFocusable(true);
searchView.requestFocus();
searchView.requestFocusFromTouch();
}
});
searchView.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
setItemsVisibility(menu, singleSearchItem, true);
searchView.clearFocus();
return false;
}
});
final AutoCompleteTextView searchAutoCompleteTextView = (AutoCompleteTextView) searchView
.findViewById(R.id.search_src_text);
searchAutoCompleteTextView.setThreshold(1);
}
Просто уточнить. Вы нажимаете на поиск -> панель поиска расширяется -> вы вводите запрос -> вы выбираете предлагаемый элемент -> панель поиска рушится, а клавиатура ушла -> вы снова нажимаете поиск -> вы видите большое белое текстовое поле сверху и клавиатуру на дно. Я прав? – Andrew
Да, это ситуация. –