2017-02-08 7 views
2

Я создаю небольшой пример, чтобы показать свою проблему. Компонов с SearchView в панели инструментов и 3 кнопки: 1) Набор текста - расширить вид поиска и задать запрос 2) Развернуть - развернуть вид поиска 3) Collapse - Распад вид поискаПосле сглаживания SearchView исчезает с панели инструментов

activity_main.xml
андроид: fitsSystemWindows = "истинный">

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true" 
     android:orientation="vertical" 
     tools:context="com.porn.MainActivity"> 

     <android.support.design.widget.AppBarLayout 
      android:layout_width="368dp" 
      android:layout_height="wrap_content" 
      tools:layout_editor_absoluteX="8dp" 
      tools:layout_editor_absoluteY="0dp"> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:background="?attr/colorPrimary" 
       app:contentInsetStartWithNavigation="0dp"> 

      </android.support.v7.widget.Toolbar> 

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

     <Button 
      android:id="@+id/setTextBtn" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Set text" /> 

     <Button 
      android:id="@+id/expandBtn" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Expand" /> 

     <Button 
      android:id="@+id/collapseBtn" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Collapse" /> 
    </LinearLayout>  
</android.support.v4.widget.DrawerLayout> 

MainActivity.java

Проблема возникает, когда я вызываю метод init() из onCreateOptionsMenu (в реальном приложении i init SearchView с текстом от намерения дополнительно). Если я вызову метод setToolbarSearchQuery из init и после нажатия кнопки свернуть, SearchView рухнул, и значок поиска исчезнет.

Но если я не буду вызывать метод init и вызывается тот же метод setToolbarSearchQuery с установленной текстовой кнопкой, он работает правильно (SearchView свернут и отображается значок поиска, отображаемый на панели инструментов).

Как я могу решить эту проблему? И почему значок исчезает после краха?

Я понял, что это происходит, когда я расширяю SearchView с onCreateOptionsMenu. Но как я могу исправить init SearchView от намерения дополнительно?

Скриншот как это выглядит после распада enter image description here

Скриншот, как он должен выглядеть после распада enter image description here

ответ

0

Я нашел только одно решение. Установить текст в методе init задержка.

public void init() { 
    //setToolbarSearchQuery("Text from intent"); 
    final Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      toolbarSearchMenuItem.expandActionView(); 
      toolbarSearchView.setQuery("Text from intent", false); 
     } 
    }, 1000); 
} 

Но мне не нравится это решение. Это похоже на трюк.

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