Toolbar안에 검색버튼을 만들었습니다.
검색버튼을 구현하기전에 액션바를 없애고 toolbar를 만들어줘야합니다.
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@android:color/holo_orange_light"
android:elevation="10dp"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar" />
<TextView
android:id="@+id/txtsearch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="검색식 : "
android:textSize="25dp" />
<TextView
android:id="@+id/txtresult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="검색결과"
android:textSize="25dp" />
<TextView
android:id="@+id/txtstatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="현재 상태 : 축소됨"
android:textSize="25dp" />
<Button
android:id="@+id/btnexpand"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="mOnClick"
android:text="확장" />
<Button
android:id="@+id/btncollapse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="mOnClick"
android:text="축소" />
</LinearLayout>
Toolbar를 만들기 위해 res/menu/search_menu.xml을 만들어주고 검색아이콘을 넣습니다.
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/search"
android:icon="@android:drawable/ic_menu_search"
android:title="검색"
app:actionViewClass="androidx.appcompat.widget.SearchView"
app:showAsAction="collapseActionView|ifRoom" />
</menu>
MainActivity.java
toolbar를 설정해주고 검색기능을 추가합니다.
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//메뉴 생성하는 onCreateOptionsMenu
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
//search_menu.xml 등록
MenuInflater inflater=getMenuInflater();
inflater.inflate(R.menu.search_menu,menu);
mSearch=menu.findItem(R.id.search);
//메뉴 아이콘 클릭했을 시 확장, 취소했을 시 축소
mSearch.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
TextView text=(TextView)findViewById(R.id.txtstatus);
text.setText("현재 상태 : 확장됨");
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
TextView text=(TextView)findViewById(R.id.txtstatus);
text.setText("현재 상태 : 축소됨");
return true;
}
});
//menuItem을 이용해서 SearchView 변수 생성
SearchView sv=(SearchView)mSearch.getActionView();
//확인버튼 활성화
sv.setSubmitButtonEnabled(true);
//SearchView의 검색 이벤트
sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
//검색버튼을 눌렀을 경우
@Override
public boolean onQueryTextSubmit(String query) {
TextView text = (TextView)findViewById(R.id.txtresult);
text.setText(query + "를 검색합니다.");
return true;
}
//텍스트가 바뀔때마다 호출
@Override
public boolean onQueryTextChange(String newText) {
TextView text = (TextView)findViewById(R.id.txtsearch);
text.setText("검색식 : "+newText);
return true;
}
});
return true;
}
// 검색 확장,축소를 버튼으로 생성
public void mOnClick(View v) {
switch (v.getId()) {
case R.id.btnexpand:
mSearch.expandActionView();
break;
case R.id.btncollapse:
mSearch.collapseActionView();
break;
}
}
참고자료
'Android' 카테고리의 다른 글
FloatingActionButton 구현 (0) | 2021.03.13 |
---|---|
당겨서 새로고침 기능 추가하기 (0) | 2021.01.23 |
Activity 생명주기 (0) | 2021.01.21 |
안드로이드 4대 컴포넌트 (0) | 2021.01.20 |
Retrofit2 + Okhttp3 (0) | 2021.01.12 |