티스토리 뷰

반응형

 

안드로이드에서 화면당 하나씩 가질 수 있는 메뉴를 의미합니다.

 

 

XML 수정

먼저 activity_main의 xml을 아래와 같이 수정합니다.

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="@style/TextAppearance.AppCompat.Large"
        android:text="" />

</LinearLayout>

 

 

Option Menu 만들기

 

 

res > New > Android Resource File을 클릭합니다.

 

 

Resource type을 Menu로 설정하고 생성을 합니다.

 

 

Option Menu XML 수정

 

option menu의 xml을 아래와 같이 수정합니다.

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:title="1" />
    <item android:title="2" />
    <item android:title="3" />
</menu>

 

 

Activity에서 Option Menu 보이게 하기

 

위에 그대로 하고 실행을 하게 되면 화면에 아래와 같이 아무것도 없이 기본 화면만 보이게 됩니다.

 

 

Option Menu를 보이게 하기 위해서는 아래 코드를 추가하면 됩니다.

 

 

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.option_menu, menu)
        return true
    }
}

 

onCreateOptionsMenu 함수를 오버라이드 하여 menuInflater를 통해 만들어 두었던 menu의 xml을 등록하고 true를 반환하면 됩니다.

 

 

 

실행을 하면 위와 같은 모습을 확인할 수 있습니다.

 

 

Option Menu Event 설정하기

 

먼저 menu의 xml에 아래와 같이 id값을 추가해줍니다.

 

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/item1"
        android:title="1" />
    <item
        android:id="@+id/item2"
        android:title="2" />
    <item
        android:id="@+id/item3"
        android:title="3" />
</menu>

 

그리고 MainActivity에 아래의 코드를 추가하였습니다.

 

 override fun onOptionsItemSelected(item: MenuItem): Boolean {

        when(item.itemId) {
            R.id.item1 -> textView.text = "1번 아이템"
            R.id.item2 -> textView.text = "2번 아이템"
            R.id.item3 -> textView.text = "3번 아이템"
        }
        return super.onOptionsItemSelected(item)
    }

 

onOptionsItemSelected 함수를 통해 id값이 선택되었을 때 반응을 하도록 설정하였습니다.

 

 

실행을 하고 메뉴를 선택을 하면 위와 같이 동작을 하는 것을 확인할 수 있습니다.

 

 

 

+ Option Menu에 하위 메뉴 추가하기

 

item 안에 menu를 넣고 item을 넣으면 하위 메뉴를 추가할 수 있습니다.

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/item1"
        android:title="1" >
        <menu >
            <item android:title="1-1" />
            <item android:title="1-2" />
        </menu>
    </item>
    <item
        android:id="@+id/item2"
        android:title="2" />
    <item
        android:id="@+id/item3"
        android:title="3" />
</menu>

 

반응형
댓글