반응형
ToolBar 의 ActionView
- ToolBar도 ActionBar처럼 ActionView를 구성해 사용 가능
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
val data1 = arrayOf("aaa","bbb","ccc","ddd","eee")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater) // 뷰바인딩 객체
val view = binding.root //뷰바인딩을 통해 레이아웃과 뷰가 결합 -> .root 를 통해 View 객체만를 뽑아내는(?)
setContentView(view)
// 액션바 없애고 툴바를 대신해 사용할 수 있도록 설정
setSupportActionBar(binding.toolbar)
val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1,data1)
binding.list1.adapter = adapter
binding.list1.isTextFilterEnabled = true
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.main_menu, menu)
// SearchView를 가지고 있는 메뉴 아이템 객체를 추출
val item = menu.findItem(R.id.item)
// SearchView 객체를 가지고 온다.
val search = item?.actionView as SearchView
// 안내문구를 설정
search.queryHint = "검색어 입력"
// 메뉴 아이템에 배치된 뷰가 접히거나 펼쳐질 때 반응하는 리스너 구현 (MenuItem의 리스너)
val listenr1 = object : MenuItem.OnActionExpandListener {
// 접혔을 때 호출
override fun onMenuItemActionCollapse(p0: MenuItem?): Boolean {
//p0 : 접혔다 펼쳤다 할 수 있는 뷰를 가지고 있는 메뉴 아이템 객체의 주솟값
binding.textView.text = "접힘"
return true
}
// 펼쳤을 때 호출
override fun onMenuItemActionExpand(p0: MenuItem?): Boolean {
binding.textView.text = "펼침"
return true
}
}
// 리스너 세팅
item.setOnActionExpandListener(listenr1)
// 검색어를 입력할때 반응하는 리스너 (SearchView의 리스너)
val listener2 = object : SearchView.OnQueryTextListener {
// SearchView에 문자열을 입력할 때마다 호출되는 메서드
override fun onQueryTextChange(newText: String?): Boolean {
binding.textView.text = "문자열 입력중"
binding.textView2.text = "입력중 : ${newText}"
// SearchView에 입력한 내용을 listView의 필터 문자열로 설정 (리스트뷰에서 그냥 바로 필터링 해줌!)
// 리스트뷰의 문자열을 필터링
binding.list1.setFilterText(newText)
// 만약 설정한 문자열 길이가 0이라면 필터 문자열을 제거 (이거 안 하면 이전 필터링 결과 계속 남아있음
if (newText?.length == 0) {
binding.list1.clearTextFilter()
}
return true
}
// 키보드의 돋보기 버튼(검색완료)을 눌렀을 때 호출되는 메서드
override fun onQueryTextSubmit(query: String?): Boolean {
binding.textView.text = "문자열 입력 완료"
binding.textView2.text = "입력완료 : ${query}"
search.clearFocus() // 키보드 사라짐
return true
}
}
search.setOnQueryTextListener(listener2)
return true
}
}
반응형
'Android' 카테고리의 다른 글
[안드로이드/이슈해결] ToolBar의 Menu Item 화면에 안 나오는 문제 (0) | 2023.04.27 |
---|---|
[안드로이드/ActionBar/ToolBar] ToolBar를 이용한 Navigation (0) | 2023.04.25 |
[안드로이드/ActionBar/ToolBar] ToolBar (0) | 2023.04.25 |
[안드로이드/ActionBar] ActionBar 커스텀 (0) | 2023.04.25 |
[안드로이드/ActionBar] ActionBar Navigation (0) | 2023.04.25 |