본문 바로가기

Android

Toolbar 검색버튼 만들기

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;
        }
    }

 

 

참고자료

https://livedata.tistory.com/93

'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