Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

안드로이드 팝업 메뉴(PopupMenu) 구현 예제 – 단계별 따라하기

팝업 메뉴(Popup Menu)는 일반 메뉴와 비슷하지만, 액티비티의 남은 공간에 따라 해당 뷰의 위쪽 또는 아래쪽에 자동으로 표시되는 UI 요소입니다. 이 글에서는 안드로이드에서 팝업 메뉴를 손쉽게 구현하는 방법을 단계별로 알아보겠습니다.

1단계: 새 프로젝트 생성

안드로이드 스튜디오를 실행한 후 File → New Project를 선택하고, 프로젝트 생성에 필요한 정보를 모두 입력하여 새 프로젝트를 만듭니다.

2단계: 레이아웃 작성 (res/layout/activity_main.xml)

아래 코드를 res/layout/activity_main.xml 파일에 추가합니다.

<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
    xmlns:tools = "https://schemas.android.com/tools"
    android:id = "@+id/rootview"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:orientation = "vertical"
    android:background = "#c1c1c1"
    android:gravity = "center_horizontal"
    tools:context = ".MainActivity">
    <Button
        android:id = "@+id/popup"
        android:text = "Download"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content" />
</LinearLayout>

위 코드에는 버튼 하나가 배치되어 있습니다. 이 버튼을 클릭하면 팝업 메뉴가 화면에 나타나도록 구성할 것입니다.

3단계: MainActivity.java 코드 작성

다음 코드를 src/MainActivity.java 파일에 추가합니다.

package com.example.andy.myapplication;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.PopupMenu;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    Button popupButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        popupButton = findViewById(R.id.popup);
        popupButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                popupMenuExample();
            }
        });
    }
    private void popupMenuExample() {
        PopupMenu p = new PopupMenu(MainActivity.this, popupButton);
        p.getMenuInflater().inflate(R.menu.popup_menu_example, p.getMenu());
        p.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            public boolean onMenuItemClick(MenuItem item) {
                Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();
                return true;
            }
        });
        p.show();
    }
}

핵심 코드 설명

버튼을 클릭하면 PopupMenu 객체가 생성되고, 메뉴 리소스가 이 객체에 등록(inflate)됩니다.

PopupMenu p = new PopupMenu(MainActivity.this, popupButton);
p.getMenuInflater().inflate(R.menu.popup_menu_example, p.getMenu());

여기서 사용된 popup_menu_example 메뉴 리소스는 다음과 같습니다.

<?xml version = "1.0" encoding = "utf-8"?>
<menu xmlns:android = "https://schemas.android.com/apk/res/android">
    <item
        android:id = "@+id/android"
        android:title = "Android" />
    <item
        android:id = "@+id/java"
        android:title = "JAVA"/>
    <item
        android:id = "@+id/kotlin"
        android:title = "Kotlin"/>
</menu>

사용자가 메뉴 항목을 클릭하면 onMenuItemClickListener()가 호출되어 클릭 이벤트를 처리합니다.

p.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
    public boolean onMenuItemClick(MenuItem item) {
        Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();
        return true;
    }
});

마지막으로 show() 메서드를 호출해야 팝업 메뉴가 실제로 화면에 표시됩니다.

p.show();

앱 실행 및 결과 확인

이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 기기가 컴퓨터에 연결되어 있다고 가정합니다. 안드로이드 스튜디오에서 프로젝트의 액티비티 파일 중 하나를 연 뒤 툴바의 Run 아이콘을 클릭하고, 실행 옵션에서 자신의 모바일 기기를 선택하세요. 그러면 기기에 다음과 같은 기본 화면이 표시됩니다.

안드로이드 팝업 메뉴(PopupMenu) 구현 예제 – 단계별 따라하기

Download 버튼을 클릭하면 팝업 메뉴가 나타납니다. 버튼 위쪽에 공간이 부족하기 때문에 메뉴는 아래쪽에 표시됩니다.

안드로이드 팝업 메뉴(PopupMenu) 구현 예제 – 단계별 따라하기

메뉴 항목 중 하나를 클릭하면 해당 항목의 제목이 토스트(Toast) 메시지로 표시됩니다.

안드로이드 팝업 메뉴(PopupMenu) 구현 예제 – 단계별 따라하기