728x90
ActionBar에 Viwe를 배치하고 이를 접었다 폈다 할 수 있는 개념이다.
주로 검색 기능을 만들 때 사용한다.
package com.example.actionviewe
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.*
import kotlinx.android.synthetic.main.activity_main.view.*
class MainActivity : AppCompatActivity() {
val data1 = arrayOf("aaaa","bbbb","cccc", "aabb","ccdd")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val adapter = ArrayAdapter(this,android.R.layout.simple_list_item_1,data1)
list1.adapter = adapter
// 검색어 기준으로 필터링 될 수 있도록 설정한다.
list1.isTextFilterEnabled = true
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.main_menu,menu)
//SearchView를 가지고 있는 메뉴 아이템 객체를 추출
val item1 = menu?.findItem(R.id.item1)
// SearchView 객체를 가지고 온다.
val search1 = item1?.actionView as SearchView
// 안내문구를 설정
search1.queryHint = "검색어 입력"
// 메뉴 아이템에 배치된 뷰가 접히거나 펼쳐질 때 반응하는 리스너
val listener1 = object : MenuItem.OnActionExpandListener {
// 접혔을 떄 호출
override fun onMenuItemActionCollapse(p0: MenuItem?): Boolean {
textView.text="접힘"
return true
}
// 펼쳐졌을 떄 호출
override fun onMenuItemActionExpand(p0: MenuItem?): Boolean {
textView.text="펼침"
return true
}
}
item1.setOnActionExpandListener(listener1)
// SearchView의 리스너
val listener2 = object : SearchView.OnQueryTextListener{
// 키보드의 돋보기 버튼을 눌렀을 때 호출되는 메서드
override fun onQueryTextSubmit(query: String?): Boolean {
textView.text = "문자열 입력 완료"
textView2.text = "입력 완료 : $query"
// 키보드 활성화 끄기
search1.clearFocus()
return true
}
// SearchView에 문자열을 입력할 떄 마다 호출되는 메서드
override fun onQueryTextChange(newText: String?): Boolean {
textView.text = "문자열 입력중"
textView2.text = "입력 중 : $newText"
// SearchView에 입력한 내용을 listView의 필터 문자열로 설정한다.
list1.setFilterText(newText)
// 만약 설정한 문자열의 길이가 0 이라면 필터 문자열을 제거한다.
if (newText?.length == 0) {
list1.clearTextFilter()
}
return true
}
}
search1.setOnQueryTextListener(listener2)
return true
}
}
main_menu.xml
<?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:id="@+id/item1"
android:icon="@android:drawable/ic_menu_search"
android:title="SearchBar"
app:showAsAction="always|collapseActionView"
app:actionViewClass="androidx.appcompat.widget.SearchView"/>
</menu>
728x90
'안드로이드 > ActionBar' 카테고리의 다른 글
안드로이드 ToolBar에서 ActionView 사용 (0) | 2022.06.20 |
---|---|
안드로이드 Toolbar (0) | 2022.06.20 |
안드로이드 ActionBar 커스터마이징 (0) | 2022.06.19 |
안드로이드 ActionBar Navigation (0) | 2022.06.19 |
안드로이드 ActionBar 기초 (0) | 2022.06.19 |