1

DurumAndroid SearchView devre dışı bırakarak tam ekran onlar bir aramada girdiğinizde kullanıcıya önerileri görüntüler benim araç çubuğunda bir SearchView var

öneri seçtikten sonra çalışmıyor. Öncelikle, yatay yönde, her şey görüntülenen ekran tuşu ve arama görünümünde görünür. Ancak, kullanıcı bir öneri seçtikten ve ikinci bir arama yapmayı denedikten sonra, arama arayüzü artık arama ekranının kaplandığı ve önerilerin görülemeyeceği tam ekrantadır.

Sorun sürekli olursa olsun arama fonksiyonu kullanılır kaç kez tam ekran nasıl alabilirim

? , FlagNoExtractUi

Kod

MainFragment sorun SearchView en onActionViewCollapsed çağrısı gibi görünüyor

@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); 
} 
+0

Sadece netleştirmek için. Arama tuşuna basarsınız -> arama çubuğu genişletilir -> sorgu yazılır -> önerilen öğeyi seçersiniz -> arama çubuğu daraltılır ve klavye kaybolur -> siz bir kez daha aramaya basarsınız -> üstte büyük beyaz metin kutusu ve klavye alt. Ben haklı mıyım – Andrew

+0

Evet durum bu. –

cevap

1

flagNoFullscreen -

şeyler ben

ImeOptions çalıştılar. Menu.xml dosyasında collapseActionView ekleyerek bir geçici çözüm yaptım. Daha sonra searchview.onActionViewCollapsed'ı kaldırın. Bunun yerine menuItem.collapseActionView ekleyin.

searchView.clearFocus(); 
//searchView.onActionViewCollapsed(); 
menuItem.collapseActionView(); //Added this 
setItemsVisibility(menu, singleSearchItem, true); 
1

Her şeyi basit tutmaya çalışın. Yani, neden tüm bu requestFocus, clearFocus vb. Kullanıyorsunuz, görevinizin çok basit bir uygulamasını oluşturdum ve her şey bir çekicilik gibi çalışıyor. Bunu kontrol etmek için:

import android.database.Cursor; 
import android.database.MatrixCursor; 
import android.os.Bundle; 
import android.provider.BaseColumns; 
import android.support.v4.view.MenuItemCompat; 
import android.support.v4.widget.SimpleCursorAdapter; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.SearchView; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.TextView; 

public class SearchableActivity extends AppCompatActivity { 

    private TextView selectedValueTextView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_searchable); 
     selectedValueTextView = (TextView) findViewById(R.id.selected_value); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_with_search, menu); 
     final MenuItem searchMenuItem = menu.findItem(R.id.action_search); 
     final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchMenuItem); 
     searchView.setSuggestionsAdapter(new SimpleCursorAdapter(
       this, 
       android.R.layout.simple_list_item_1, 
       null, 
       new String[]{"value"}, 
       new int[]{android.R.id.text1}, 
       0 
     )); 
     searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
      @Override 
      public boolean onQueryTextSubmit(String query) { 
       return false; 
      } 
      @Override 
      public boolean onQueryTextChange(String query) { 
       MatrixCursor cursor = new MatrixCursor(new String[]{BaseColumns._ID, "value"}); 
       for (int i = 0; i < 10; i++) { 
        cursor.addRow(new Object[]{i, query + i}); 
       } 
       searchView.getSuggestionsAdapter().changeCursor(cursor); 
       return true; 
      } 
     }); 
     searchView.setOnSuggestionListener(new SearchView.OnSuggestionListener() { 
      @Override 
      public boolean onSuggestionSelect(int position) { 
       return false; 
      } 
      @Override 
      public boolean onSuggestionClick(int position) { 
       Cursor cursor = (Cursor) searchView.getSuggestionsAdapter().getItem(position); 
       selectedValueTextView.setText(cursor.getString(cursor.getColumnIndex("value"))); 
       // do this last because collapseActionView calls onQueryTextChange("") 
       // which changes cursor data 
       searchMenuItem.collapseActionView(); 
       return false; 
      } 
     }); 
     return true; 

    } 
} 
İlgili konular