2015-07-03 52 views
9

我有搜索查看展開/摺疊動畫的Android

我有一個搜索查看該做的工作非常完美。但是當我接觸它時,它就會出現並從無到有消失。沒有過渡動畫在播放,所以它看起來不太好。

我想要的東西

我想左,向右滑動動畫只需簡單的滑動將要在搜索查看播放時則分別展開和摺疊。

我試過

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()); 

,但搜索欄總是空,所以我不能在其上設置佈局轉變。

我可以得到一個解決方案嗎?我的方法是否正確?

+0

任何一個可以在這裏發佈一個建議? –

回答

6

實際上,你可以只通過執行以下搶的LinearLayout:

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

所以,

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

是的,searchBar現在不爲null,並且不再有NullPointerException。但動畫不像我想要的那樣。展開/摺疊時沒有滑動左/滑動右側動畫。一旦我得到完整的答案,我會接受答案。謝謝。 –

+1

你能幫助我完整的解決方案嗎? –

+2

一個奇怪的動畫仍然是一個動畫... Thx @Steven! –

2

閱讀@Steven答案,我得到了解決下面給出

內後onCreateOptionsMenu(Menu menu)方法編寫代碼

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()); 

,這裏是我的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()); 
}