2016-06-26 2 views
8

У меня на самом деле проблема с моей поисковой системой Support AppCompat v7 lib 24.0.0.Searchview не отображается на панели инструментов

SearchView не не появился никакого текста и ввод текста (скриншот) вид

enter image description here

SearchQuery отработаны.

Вот мое меню

<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> 

А вот мой 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; 
      } 
     }); 

Я надеюсь, что кто-то может мне помочь. :)

Sebastian

+0

Почему вы вызываете menu.clear()? Это не должно быть проблемой, потому что вы снова наполняете ее, но попробуйте без menu.clear()? – Botz

+0

, потому что он показывает мне все предметы double –

+0

Это странно, вы можете показать больше своего фрагмента? – Botz

ответ

17

У меня тоже есть эта проблема, я изменил высоту панели инструментов на абсолютное значение вместо wrap_content и проблема решена. Я не знаю, почему, но я думаю, что эта проблема связана с CoordinatorLayout и высотой панели инструментов, что-то нарушает высоту SearchView. если я использую LinearLayout вместо CoordinatorLayout и AppBarLayout, это работает.

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> 

значение toolbar_height:

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

Before absolute height value (layout_height:"wrap_content")

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

+0

Спасибо, что была проблема: D –

+4

Было бы лучше, если вы пропустите пользовательский размер и установите высоту панели инструментов: android: layout_height = "? android: attr/actionBarSize" – esilver

+0

Ну, у меня такая же проблема, но она не исправлена ​​..... – ASK

0

Убедитесь, что вы добавить библиотеку AppCompat в свой проект. Расширяется ли ваша активность «AppCompatActivity»?

А также showAsAction Шоуда быть: showAsAction="always|collapseActionView"

Надеется, что это поможет!

+0

I 'm в фрагменте, а моя MainActivity простирается от AppCompactActivity Перед обновлением до 24.0.0 он работает –

2

если вы используете тему: .NoActionBar установить это в вашем onCreate()

setSupportActionBar(toolbar); 
0

Это очень странно. Я использую инструменты сборки 25.0.1 и поддержку lib 25.1.0. Для меня принятый ответ не нужен, но способ определения пункта меню требует небольшого изменения. Мне это нужно так:

<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"/> 

Где app:showAsAction ключ. Линт подчеркивает это как красное и говорит мне:

Следует использовать android:showAsAction при использовании библиотеки appcompat.

Однако, если у меня он установлен в android:showAsAction, тогда вид поиска просто не отображается. Идите фигуру.

Смежные вопросы