[안드로이드/코틀린] Menu / MenuInflater

박의진·2022년 9월 10일
0

안드로이드 코틀린

목록 보기
11/16

1. 메뉴 생성

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

//두번째 매개변수에서 menu id 역할을 한다. 
    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        val menuItem1: MenuItem? = menu?.add(0, 0, 0, "menu1")
        val menuItem2: MenuItem? = menu?.add(0, 1, 0, "menu2")
        return super.onCreateOptionsMenu(menu)
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean = when(item.itemId){
        0 -> {
            Toast.makeText(this, "menu1 click", Toast.LENGTH_SHORT).show()
            true
        }
        1-> {
            Toast.makeText(this, "menu2 click", Toast.LENGTH_SHORT).show()
            true
        }
        else -> super.onOptionsItemSelected(item)
    }

}

2. MenuInflater

1. menu 폴더에 생성

<?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/menu1"
        android:title="menu1"/>
    <item
        android:id="@+id/menu2"
        android:icon="@android:drawable/ic_menu_add"
        android:title="menu2"
        app:showAsAction="always"/>

    <item android:id="@+id/menu_search"
        android:title="search"
        app:showAsAction="always"
        app:actionViewClass="androidx.appcompat.widget.SearchView"/>

</menu>
  • app:showAsAction="always"는 액션바에 표시하겠다는 속성이다.
    기본 디폴트는 never로 표시하지 않는 것이다.
  • app:actionViewClass="androidx.appcompat.widget.SearchView"
    액션바의 내장 뷰를 이용하는 속성이다.

2. 메인 액티비티 생성

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.menu_main, menu)
        return super.onCreateOptionsMenu(menu)
    }

}

profile
주니어 개발자의 개발일지

0개의 댓글