상세 컨텐츠

본문 제목

[안드로이드]메뉴(Menu), 서브메뉴(Sub Menu) 만들어보기

안드로이드

by aries574 2020. 12. 8. 13:53

본문


2020/12/07 - [안드로이드] - [안드로이드] SeekBar 볼륨조절, 밝기조절

이번 시간에는 메뉴를 만들어보겠습니다. 

앱에서 흔하게 쓰이는 기능이죠. 보통 점 3개가 있는 이미지를 클릭하면 메뉴가 나옵니다.

 

1. 메뉴 만들기

메뉴는 activity_main.xml에 직접 만드는게 아니라 메뉴 전용 xml을 만들어야 합니다.

일단 메뉴폴더부터 만듭니다.

 1-1 res -> Android Resource Directory

 

Resource Type 은 menu로 변경하고 Directory name은 menu로 합니다.

 

 

메뉴폴더를 만들었으니 이번에는 메뉴화면이 들어갈 Menu Resource FIle을 만들겠습니다.

menu -> 마우스오른쪽 -> New -> Menu Resource File

파일명은 option_menu로 하겠습니다.

 

option_menu.xml

showAsAction : 표시타입

always: 항상

never: 항상 안보이기

ifRoom: 공간이 있을경우 표시

withText: 아이콘과 텍스트 함께 표시

<?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/item1"
        android:icon="@drawable/ic_wifi"
        android:title="WIFI"
        app:showAsAction="ifRoom"
         />

    <item android:id="@+id/item2"
        android:title="item 2"
        app:showAsAction="never"
        />
    <item android:id="@+id/item3"
        android:title="item 3"
        app:showAsAction="never">

        <menu>
            <item android:id="@+id/subitem1"
                android:title="Sub Item 1"/>
            <item android:id="@+id/subitem2"
                android:title="Sub Item 2"/>
        </menu>

    </item>

</menu>

 

2. 기능구현(MainActivity.java)

만들어 놓은 메뉴를 이제 메인화면에 띄우는 코드를 만들어보겠습니다.

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    /**
     * 메뉴 설정
     * @param menu
     * @return
     */
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.option_menu, menu);
        return true;
    }

    /**
     * 메뉴선택기능
     * @param item
     * @return
     */
    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {

        switch(item.getItemId()){
            case R.id.item1:
                Toast.makeText(this, "아이템 1 선택했습니다.", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.item2:
                Toast.makeText(this, "아이템 2 선택했습니다.", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.item3:
                Toast.makeText(this, "아이템 3 선택했습니다.", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.subitem1:
                Toast.makeText(this, "서브아이템 1 선택했습니다.", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.subitem2:
                Toast.makeText(this, "서브아이템 2 선택했습니다.", Toast.LENGTH_SHORT).show();
                return true;
                default:
                return super.onOptionsItemSelected(item);
        }
    }
}

 

3. 실행화면

 

반응형

관련글 더보기

댓글 영역