2015-07-03 6 views
9

Was Ich habeSuche zeigen/Minimierungsanimation in Android

Ich habe eine Suche, die perfekt ihre Arbeit tut. Aber wenn ich es anfasse, erscheint es und verschwindet aus dem Nichts. Es gibt keine Übergangsanimation, die darauf spielt und so sieht es nicht gut aus.

What I Want

ich eine einfache Rutsche links wollen und rechte Animation gleiten auf der Suche gespielt werden, wenn es expandiert und kollabiert sind.

Was ich Versuchte

SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView(); 
//Get the ID for the search bar LinearLayout 
int searchBarId = searchView.getContext().getResources().getIdentifier("android:id/search_bar", null, null); 
//Get the search bar Linearlayout 
LinearLayout searchBar = (LinearLayout) searchView.findViewById(searchBarId); 
//Give the Linearlayout a transition animation. 
searchBar.setLayoutTransition(new LayoutTransition()); 

aber die SearchBar ist immer null, damit ich nicht das Layout Übergang auf sie einstellen können.

Kann ich eine Lösung dafür bekommen? Ist meine Vorgehensweise korrekt?

+0

Kann man hier einen Vorschlag posten? –

Antwort

6

Sie können tatsächlich nur greifen das Linearlayout, indem Sie folgendermaßen vorgehen:

LinearLayout searchBar = (LinearLayout) searchView.findViewById(R.id.search_bar); 

So

SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView(); 
final int searchBarId = searchView.getContext().getResources().getIdentifier("android:id/search_bar", null, null); 
LinearLayout searchBar = (LinearLayout) searchView.findViewById(searchBarId); 
searchBar.setLayoutTransition(new LayoutTransition()); 
+2

Ja, die searchBar ist jetzt nicht null und es gibt keine NullPointerException mehr. Aber die Animation ist nicht wie die, die ich will. Beim Expandieren/Minimieren gibt es keine Folie links/rechts schieben. Ich werde die Antwort akzeptieren, sobald ich die vollständige Antwort bekommen habe. Vielen Dank. –

+1

Können Sie mir mit der vollständigen Lösung helfen? –

+2

Eine seltsame Animationen ist immer noch eine Animation ... Thx @ Steven! –

2

Nach der @ Steven Antwort zu lesen bekam ich die Lösung weiter unten

innerhalb der onCreateOptionsMenu(Menu menu) Methode schreiben Sie den Code

getMenuInflater().inflate(R.menu.meet_people_menu, menu); 
    final MenuItem searchItem = menu.findItem(R.id.app_bar_search); 
    SearchView searchView = (SearchView) searchItem.getActionView(); 
    LinearLayout searchBar = (LinearLayout) searchView.findViewById(R.id.search_bar); 
    searchBar.setLayoutTransition(new LayoutTransition()); 

und hier ist mein meet_people_menu.xml

<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="com.jz.cso.activities.MeetPeopleActivity"> 
<item 
    android:title="" 
    android:id="@+id/app_bar_search" 
    android:icon="@drawable/ic_search_black_24dp" 
    app:actionViewClass="android.support.v7.widget.SearchView" 
    app:showAsAction="always" 
    ></item> 
</menu> 
0
View searchBar = searchView.findViewById(R.id.search_bar); 
if (searchBar != null && searchBar instanceof LinearLayout) { 
    ((LinearLayout) searchBar).setLayoutTransition(new LayoutTransition()); 
}