Action Bar는 안드로이드에서 많은 기능을 제공하고 있다. 이번 포스팅에서는 기본적인 부분만 먼저 보도록 하려고 한다.
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:title="Item1" />
<item
android:id="@+id/Item2"
android:icon="@drawable/ic_launcher_foreground"
android:title="Item2"
app:showAsAction="always" />
<item
android:id="@+id/Item3"
android:icon="@android:drawable/ic_lock_idle_alarm"
android:title="Item3"
app:showAsAction="always|withText" />
<item
android:id="@+id/Item4"
android:icon="@android:drawable/ic_dialog_info"
android:title="Item4"
app:showAsAction="ifRoom" />
<item
android:id="@+id/Item5"
android:icon="@android:drawable/ic_menu_search"
android:title="Item5"
app:showAsAction="always|collapseActionView"
app:actionViewClass="androidx.appcompat.widget.SearchView"/>
</menu>
먼저 메뉴xml을 만들고 나면, app:showAsAction을 주목하자.
1. ifRoom : 상단 툴바에 공간이 존재하면 아이콘으로 보여줘라!
2. always : 무조건 보여줘
3. never : 상단 앱바에 절대 뿌리지 않겠어.
4. collapseActionView : 접었다 폈다하며 뷰를 표시하겠어.
5. withText : 비어있는 공간에 한해서 text도 같이 뿌리겠어!
라고 보면 된다.
이런식으로 아이콘을 배치하거나 보이거나 .. 가능해진다. 직접해보는게 훨씬 이해하기 빠를 것이다. 눈으로만 보는 것은 절대 공부가 안된다!
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.main_menu, menu)
var search_item:MenuItem? = menu?.findItem(R.id.Item5)
var search_view: SearchView = search_item?.actionView as SearchView
search_view.queryHint = "검색어를 입력해주세요."
search_view.setOnQueryTextListener(object : SearchView.OnQueryTextListener{
// 입력 완료됬을때
override fun onQueryTextSubmit(query: String?): Boolean {
tv1.text = query
// true하면 키보드가 안내려감
return false
}
// 입력할때마다 반응하는
override fun onQueryTextChange(newText: String?): Boolean {
tv2.text = newText
// true하면 키보드가 안내려감 근데 입력 도중이라 그다지 상관은 없음
return false
}
})
return super.onCreateOptionsMenu(menu)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.Item1 ->
tv1.text = "menu1"
R.id.Item2 ->
tv1.text = "menu2"
R.id.Item3 ->
tv1.text = "menu3"
R.id.Item4 ->
tv1.text = "menu4"
}
return super.onOptionsItemSelected(item)
}
}
그리고 안드로이드에서 기본으로 제공하는 SearchView가 있는데 (찾아보면 여러가지가 많다.) ActionBar를 활용해서 서치바를 만들 수도 있다.
활용은 다양하게 가능하다. 기본을 알면 응용하는 것은 그리 시간이 오래 걸리지 않으니 꼭 기본을 공부하도록 하자.
'안드로이드' 카테고리의 다른 글
[Android Kotlin] 안드로이드 코틀린 Fragment 상태 유지 (0) | 2020.05.10 |
---|---|
[Android Kotlin] 안드로이드 코틀린 다이얼로그 Dialog (0) | 2020.03.27 |
[Android Kotlin] 안드로이드 코틀린 Pop Up Menu (0) | 2020.03.26 |
[Android Kotlin] 안드로이드 코틀린 Context Menu (0) | 2020.03.26 |
[Android Kotlin] 안드로이드 코틀린 Option Menu (0) | 2020.03.26 |