SearchView在Android中展开/折叠动画

Ari*_*Roy 12 android android-animation android-actionbar

是)我有的

我有一个SearchView,可以完美地完成它的工作.但当我触摸它时,它会出现并从无到有中消失.没有过渡动画播放,因此看起来不太好.

我想要的是

我想要一个简单的向左滑动和向右滑动动画在分别展开和折叠时在SearchView上播放.

我试过的

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());
Run Code Online (Sandbox Code Playgroud)

但是searchBar总是为null,所以我无法在其上设置布局转换.

我可以为它找到解决方案吗?我的方法是否正确?

小智 9

您实际上可以通过执行以下操作来获取LinearLayout:

LinearLayout searchBar = (LinearLayout) searchView.findViewById(R.id.search_bar);
Run Code Online (Sandbox Code Playgroud)

所以,

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());
Run Code Online (Sandbox Code Playgroud)

  • 是的,searchBar现在不为null,并且不再有NullPointerException.但动画并不像我想要的那样.展开/折叠时没有向左滑动/向右滑动动画.一旦得到完整答案,我会接受答案.谢谢. (2认同)
  • 一个奇怪的动画仍然是动画...... Thx @Steven! (2认同)