정상적인 동작 표시 줄 (내 답변이 해당 라이브러리에 완전히 적용되는지 확실하지 않은 다른 변형을 ABS에서 찾아야 함).
SearchView 옵션 메뉴에서 팽창 할 수있는 위젯, 그래서 내가하는 작업보기가 포함 된 XML 사용하여 메뉴를 부풀려입니다 : 액션보기를 팽창 할 때
이
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/search_user"
android:actionViewClass="android.widget.SearchView"
android:icon="@drawable/magnifing_glass"
android:showAsAction="ifRoom|collapseActionView"
android:title="Search Users"/>
</menu>
다음, 설정을하여 리스너를 검색하고 전역 변수를 사용하여 이전 검색을 저장하십시오.
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.search_menu, menu);
MenuItem search = menu.findItem(R.id.search_user);
//Keep a global variable of this so you can set it within the next listener
SearchView user_search = (SearchView) search.getActionView();
user_search.setOnQueryTextListener(new OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
global_variable = query;
return true;
}
@Override
public boolean onQueryTextChange(String text) {
return true;
}
});
마지막으로 두 번째 리스너에서 작업 뷰가 확장되면 전역 변수의 텍스트를 이전 쿼리로 설정하십시오.
//This is set on the menu item
search.setOnActionExpandListener(new OnActionExpandListener() {
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
// Do something when collapsed
return true; // Return true to collapse action view
}
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
user_search.setQuery(global_variable, false);
return true; // Return true to expand action view
}
});