2016-04-01 9 views

Antwort

2

HINWEIS: Dies ist die gleiche Antwort wie Android: animate searchview.

Es gibt einen einfacheren Ansatz (in der Tat, nur zwei weitere Zeilen Code) und es ist fehlerfrei. Sie müssen Ihre SearchView in der onCreateOptionsMenu() -Methode füllen, wie Sie es vorher getan hätten, aber die Codezeilen vermeiden, in denen Sie den Übergang festgelegt haben, da sie nicht mehr benötigt werden.

Als nächstes außer Kraft setzen onOptionsItemSelected() wie folgt aus:

@Override 
public boolean onOptionsItemSelected(final MenuItem item) { 
    switch(item.getItemId()) { 
     case R.id.action_search: 
      TransitionManager.beginDelayedTransition((ViewGroup) getActivity().findViewById(R.id.toolbar)); 
      MenuItemCompat.expandActionView(item); 
      return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

Dieser Code erstellt einen Übergang und wartet auf Änderungen in der Symbolleiste Layout. Wenn SearchView angezeigt wird, startet die Animation. Es verwendet dieselbe API wie KitKat, ist aber ab ICS verfügbar. In Ihrem build.gradle:

compile 'com.android.support:transition:24.2.1' 

können Sie auch customize the transition wenn Sie nicht wie der Standard ein. Es gibt viele Übergänge zur Verfügung und einige, die Ihre Bedürfnisse für sicher