我有什么
我有一个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());
但searchBar始终为null,因此我无法在其上设置布局转换。
我可以获得解决方案吗?我的方法是否正确?
答案 0 :(得分:8)
您实际上可以通过执行以下操作来获取LinearLayout:
$em->rollback()
所以,
LinearLayout searchBar = (LinearLayout) searchView.findViewById(R.id.search_bar);
答案 1 :(得分: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>
答案 2 :(得分:0)
View searchBar = searchView.findViewById(R.id.search_bar);
if (searchBar != null && searchBar instanceof LinearLayout) {
((LinearLayout) searchBar).setLayoutTransition(new LayoutTransition());
}