SituationAndroid SearchView invalidantes fullscreen ne fonctionne pas après avoir sélectionné la suggestion
J'ai un SearchView dans ma barre d'outils qui affiche des suggestions à l'utilisateur quand ils entrent dans une recherche. Initialement, en orientation paysage, tout fonctionne correctement avec le clavier logiciel affiché et la vue de recherche visible. Cependant, après que l'utilisateur ait sélectionné une suggestion et essayé de faire une seconde recherche, l'interface de recherche est maintenant en plein écran où la vue de recherche est masquée et les suggestions ne peuvent pas être vues.
Problème
Comment puis-je obtenir pas toujours plein écran, peu importe combien de fois la fonction de recherche est utilisé?
choses que j'ai essayé
ImeOptions - flagNoFullscreen, flagNoExtractUi
code
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);
}
Juste pour clarifier. Vous appuyez sur Rechercher -> barre de recherche est développée -> vous tapez requête -> vous sélectionnez élément suggéré -> barre de recherche est effondrée et le clavier est parti -> vous appuyez sur Rechercher une nouvelle fois -> vous voyez une grande zone de texte blanche sur le dessus et le clavier bas. Ai-je raison? – Andrew
Oui c'est la situation. –