728x90
반응형
res - menu
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:title="search"
android:id="@+id/search"
android:icon="@android:drawable/ic_menu_search"
app:actionViewClass="android.widget.SearchView"
app:showAsAction="always|collapseActionView" />
</menu>
main.java
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// 우측 상단 서치뷰
inflater.inflate(R.menu.main_search_view, menu);
main_searchView = menu.findItem(R.id.search);
// 서치뷰 검색 이벤트
setSearchEvent();
return true;
}
// --------------------- 검색 ( 서치뷰 ) onCreateOptionsMenu 내부에서 호출 ---------------------
public void setSearchEvent(){
main_searchView.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
@Override // 서치뷰가 확장되었을 시
public boolean onMenuItemActionExpand(MenuItem item) {
return false;
}
@Override // 서치뷰가 없어졌을시.
public boolean onMenuItemActionCollapse(MenuItem item) {
return false;
}
});
// 검색어 및 검색어 입력 관련 이벤트
SearchView sv = (SearchView)main_searchView.getActionView();
sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override // 검색 버튼을 눌렀을 시 이벤트
public boolean onQueryTextSubmit(String query) {
Toast.makeText(MainActivity.this, "검색결과 : "+query, Toast.LENGTH_SHORT).show();
return true;
}
@Override // 글자가 쓰면서 발생하는 이벤트
public boolean onQueryTextChange(String newText) {
Toast.makeText(MainActivity.this, "검색중 : "+newText , Toast.LENGTH_SHORT).show();
return true;
}
});
}
// 서치뷰 클릭시 자동 포커스 주기
SearchView sv = (SearchView)main_searchView.getActionView();
sv.setFocusable(true);
sv.setIconified(false);
sv.requestFocusFromTouch();
만약에 서치뷰클릭 후 X 버튼시 이벤트를 따로 처리하고 싶다면.
// 서치뷰 닫기 버튼 X 모양 버튼 클릭시 이벤트
sv.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
Toast.makeText(MainActivity.this, "닫기", Toast.LENGTH_SHORT).show();
main_searchView.collapseActionView();
return true;
}
});
728x90
반응형
'Android' 카테고리의 다른 글
Android에서 타이틀바(TitleBar) 없애기 (0) | 2018.07.11 |
---|---|
안드로이드 키보드 숨기기 ( 내리기 ) (0) | 2018.07.11 |
( 스크랩 ) 안드로이드 상태바 색상 변경 (0) | 2018.07.10 |
(스크랩) Navigation View Header View 관리하기 (0) | 2018.07.10 |
안드로이드 Please select Android SDK. 이슈 (0) | 2018.07.09 |