2013-12-18 4 views
1

작은 돋보기 아이콘을 터치하여 트리거 한 내 ActionBar에 표준 검색 EditText가 있습니다. OnQueryTextListener를 사용하여 사용자의 검색 문자열을 캐싱 할 수 있습니다. 사용자가 두 번 아이콘을 터치하면 해당 문자열을 EditText에 다시 넣고 싶습니다.Android ActionBar 검색 필드

저는 8-19을 타겟팅하는 ABS (곧 포기)를 사용하고 있습니다.

어떻게하면됩니까?

답변

1

정상적인 동작 표시 줄 (내 답변이 해당 라이브러리에 완전히 적용되는지 확실하지 않은 다른 변형을 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 
     } 
    });