2016-06-26 52 views
8

In realtà ho un problema con il mio Searchview sul supporto AppCompat v7 lib 24.0.0.Searchview non visualizzato nella barra degli strumenti

Il SearchView non risulta, in alcun testo e testo di input (aspetto screenshot) lavoro

enter image description here

Il SearchQuery perfetta.

Quello è il mio menu

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

E qui il mio onCreateOptionsMenu;

menu.clear(); 
     inflater.inflate(R.menu.menu_search, menu); 
     MenuItem searchItem = menu.findItem(R.id.action_search); 
     searchView = (SearchView) MenuItemCompat.getActionView(searchItem); 
     searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
      @Override 
      public boolean onQueryTextSubmit(String query) { 
       //Perform the final search 

       return false; 
      } 

      @Override 
      public boolean onQueryTextChange(String newText) { 
       //Text has changed, apply filtering? 

       return false; 
      } 
     }); 

Spero che qualcuno possa aiutarmi. :)

Sebastian

+0

Perché si chiama menu.clear()? Non dovrebbe essere il problema perché lo stai gonfiando di nuovo, ma provalo senza il menu.clear()? – Botz

+0

perché mi mostra tutti gli elementi doppio –

+0

Questo è strano, puoi mostrare altro frammento? – Botz

risposta

17

ho anche questo problema, ho cambiato altezza barra degli strumenti sul valore assoluto invece di wrap_content e problema risolto. Non so perché, ma penso che questo problema sia correlato a CoordinatorLayout e all'altezza della barra degli strumenti, qualcosa rompe l'altezza di SearchView. se uso LinearLayout invece di CoordinatorLayout e AppBarLayout funziona.

menu.xml

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

layout.xml

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="@dimen/toolbar_height" 
      android:paddingTop="@dimen/toolbar_top_padding" 
      android:background="?attr/colorPrimary" 
      app:title="@string/drawer_item_publisher_customization" 
      app:layout_scrollFlags="scroll|enterAlways|snap" 
      android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabLayout" 
      app:tabGravity="fill" 
      style="@style/DefaultTabLayout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

    </android.support.design.widget.AppBarLayout> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewPager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

</android.support.design.widget.CoordinatorLayout> 

valore toolbar_height:

<dimen name="toolbar_height">75dp</dimen> 

Before absolute height value (layout_height:"wrap_content")

After absolute height value (layout_height:"75dp")

+0

Questo è stato il problema: D –

+4

Sarebbe meglio se salti il ​​dimen personalizzato e imposta l'altezza della barra degli strumenti su: android: layout_height = "? android: attr/actionBarSize" – esilver

+0

beh, ho lo stesso problema ma non è stato risolto ..... – ASK

0

Assicurarsi di aver aggiunto la libreria AppCompat al progetto. La tua attività è stata estesa "AppCompatActivity"?

E anche showAsAction shoud essere: showAsAction="always|collapseActionView"

Spero che questo aiuto!

+0

I Sono in un frammento e il mio MainActivity si estende da AppCompactActivity Prima dell'aggiornamento a 24.0.0 funziona –

2

se si utilizza il tema: .NoActionBar insieme questo nella vostra onCreate()

setSupportActionBar(toolbar); 
0

Questo è molto strano. Sto usando gli strumenti di compilazione 25.0.1 e supporto lib 25.1.0. Per me la risposta accettata non era necessaria, ma il modo in cui è stata definita la voce del menu richiede un piccolo cambiamento. Ne ho bisogno in questo modo:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
<item 
    android:id="@+id/search" 
    android:title="@string/search_title" 
    android:icon="@drawable/ic_search_24dp" 
    app:showAsAction="always|collapseActionView" 
    app:actionViewClass="android.widget.SearchView"/> 

Dove app:showAsAction è la chiave. Lint lo sottolinea come rosso e mi dice:

Utilizzare android:showAsAction quando si utilizza la libreria app.

Tuttavia, se l'ho impostato su android:showAsAction, la vista di ricerca semplicemente non viene visualizzata. Vai a capire.

Problemi correlati