본문 바로가기
안드로이드/ActionBar

안드로이드 ToolBar에서 ActionView 사용

by 김어찐 2022. 6. 20.
728x90

ToolBar도 ActionBar 처럼 ActionView를 구성할 수 있다.

package com.example.toolbaractionview

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.widget.ArrayAdapter
import androidx.appcompat.widget.SearchView
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    val dataList = arrayOf("aaaa","bbbb","cccc","aabb","aacc")

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        setSupportActionBar(toolbar)

        val adapter = ArrayAdapter(this,android.R.layout.simple_list_item_1,dataList)

        list1.isTextFilterEnabled = true

        list1.adapter = adapter
    }

    override fun onCreateOptionsMenu(menu: Menu?): Boolean {

        menuInflater.inflate(R.menu.main_menu,menu)

        val item1 = menu?.findItem(R.id.item1)
        val search1 = item1?.actionView as SearchView
        search1.queryHint = "검색어 입력"

        // 액션 뷰가 접혀지거나 펼쳐졌을 때 반을할 리스너
        val listener1 = object : MenuItem.OnActionExpandListener{
            override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
                textView.text="접혔습니다"
                return true
            }

            override fun onMenuItemActionCollapse(item: MenuItem?): Boolean {
                textView.text="펼쳤습니다."
                return true
            }
        }
        item1.setOnActionExpandListener(listener1)

        val listener2 = object: SearchView.OnQueryTextListener{
            override fun onQueryTextChange(newText: String?): Boolean {
                textView.text = "입력 중입니다"
                textView2.text = "입력 중 : $newText"

                list1.setFilterText(newText)
                if (newText?.length == 0) {
                    list1.clearTextFilter()
                }
                return true
            }

            override fun onQueryTextSubmit(query: String?): Boolean {
                textView.text = "입력 완료"
                textView2.text = "입력 완료 : $query"
                search1.clearFocus()
                return true
            }
        }
        search1.setOnQueryTextListener(listener2)
        return true
    }
}

 

액션바 제거

툴바

728x90