2016-12-22 15 views
1

私はアプリ内検索機能を実装しました。私は方向を固定しておくとうまくやめる。しかし、私のクエリを入力した後、私は向きを変えるsearchviewを変更すると、オリエンテーションが変更されたときに再度固定されている検索アイコンの代わりにオーバーフローアイコンが表示されます。また、オーバーフローアイコンは、クリックすると検索オプションを表示しません。検索アイコンが検索ビューの崩壊で機能しないオーバーフローに置き換えられました

keeping orientation fixed.

changing orientation after entering query.

これはこれは、任意の助けが理解されるであろうonCreateOptionsMenu

@Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){ 
     menu.clear(); 
     inflater.inflate(R.menu.options_menu, menu); 
     searchString = getActivity().getPreferences(0).getString("searchString", null); 
     final MenuItem searchMenuItem = menu.findItem(R.id.search); 
     searchView = (SearchView) MenuItemCompat.getActionView(searchMenuItem); 
     searchView.setIconifiedByDefault(true); 
     searchView.setQueryHint(getResources().getString(R.string.search_hint)); 

     //set listener on search view to fire searchResultHandlerFrag 
     searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
      @Override 
      public boolean onQueryTextSubmit(String query) { 
       Fragment fragment = new SearchHandlerFrag(); 
       Bundle bundle = new Bundle(); 
       bundle.putString("query", query); 
       fragment.setArguments(bundle); 
       searchView.clearFocus(); 
       getActivity().getSupportFragmentManager().beginTransaction().addToBackStack(null).replace(R.id.mainContainer, fragment).commit(); 
       return true; 
      } 

      @Override 
      public boolean onQueryTextChange(String newText) { 
       return false; 
      } 
     }); 

     //repopulate search view with existing search string, if any 
     if (!TextUtils.isEmpty(searchString)) { 
      if(!searchMenuItem.isActionViewExpanded()) 
       searchMenuItem.expandActionView(); 
      searchView.setQuery(searchString, false); 
      searchView.clearFocus(); 
     } 

     //trying to fix the overflow problem 
     MenuItemCompat.setOnActionExpandListener(searchMenuItem, new MenuItemCompat.OnActionExpandListener() { 
      @Override 
      public boolean onMenuItemActionExpand(MenuItem item) { 
       return true; 
      } 

      @Override 
      public boolean onMenuItemActionCollapse(MenuItem item) { 
       searchView.setIconified(true); 
       return true; 
      } 
     }); 
    } 

私の断片である、私のメニューXML

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto"> 
     <item android:id="@+id/search" 
      android:title="@string/search_title" 
     android:icon="@drawable/ic_search_white_24dp" 
     android:orderInCategory="1" 
     app:showAsAction="collapseActionView|ifRoom" 
     app:actionViewClass="android.support.v7.widget.SearchView" /> 
    </menu> 

です。前もって感謝します。

答えて

1

は、あなたのXML定義の変更では、これを試してみてください:

app:showAsAction="collapseActionView|ifRoom" 

を持つ:

app:showAsAction="always" 

それは、常に代わりcollapseActionViewアイコンを示すの可視検索のアイコンを維持する必要があります。

+0

私はすでにそれを試みました。しかし、それはアクションバーの戻るボタンを削除し、また、ランドスケープモードでうまく見えません。 –

1

[OK]を、私自身の質問に答えることは素晴らしいと感じます。そのトリックは、app:showAsAction="collapseActionView|ifRoom"app:showAsAction="collapseActionView|always"に変更することでした.Thanks Signo。

関連する問題