menu.xml은 다음과 같다(자바로 할때랑 마찬가지)



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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/action_search"
        android:title="@string/action_favorite"
        android:icon="@android:drawable/ic_menu_search"
        app:showAsAction="ifRoom" />
 
    <!-- 액션 버튼으로써 나타나는 "공유" 액션 아이템 -->
    <item
        android:id="@+id/action_share"
        android:title="@string/action_cart"
        android:icon="@android:drawable/ic_menu_share"
        app:showAsAction="ifRoom" />
 
</menu>
menu.xml
cs




코틀린으로 구현할 때는 방식이 좀 다르다.


아래와 같이 하면 간단하게 구현한다.


구글링하면 다른 방법으로 한 것들도 많이 발견된다. 뭐가 베스트인지는 모르겠다




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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, menu)
        return true
    }
 
    //액션버튼 클릭 했을 때
    override fun onOptionsItemSelected(item: MenuItem?): Boolean {
        when(item?.itemId){
            R.id.action_search -> {
                //검색 버튼 눌렀을 때
                return super.onOptionsItemSelected(item)
            }
            R.id.action_share -> {
                //공유 버튼 눌렀을 때
                return super.onOptionsItemSelected(item)
            }
            else -> return super.onOptionsItemSelected(item)
        }
    }
}
MainActivity.kt
cs




참고) 혹시 커스텀 툴바(custom toolbar)를 만들었는데 메뉴 아이템이 안들어간다면


actionbar를 설정을 안했을수도 있다. 그러면, MainActivity.kt에 다음과 같이 코드를 짜주면 된다.


액션바 코드는 타이틀을 없애주는 코드다.



 

1
2
3
4
5
//참고: 커스텀 툴바 적용하기
val toolBar = find<toolbar>(R.id.toolbar)
setSupportActionBar(toolBar)

//참고: 타이틀 없애기
val actionBar = supportActionBar
if(actionBar != null) actionBar.setDisplayShowTitleEnabled(false)
cs


+ Recent posts