팝업메뉴는 컨텍스트 메뉴와 용도가 동일하지만 약간 더 업그레이드된 버전이라고
생각하시면 되겠습니다.
먼저 생성자는 다음과 같다.
PopupMenu(Context context, View anchor)
두번째 인수는 팝업 메뉴를 표시할 앵커 뷰를 지정함. 앵커 뷰 아래에 팝업 메뉴가 나타난다.
메뉴와 메뉴 전개자는 다음 메소드를 사용한다
Menu getMenu()
MenuInflater getMenuInflater()
Menu의 add 메소드로 빈 메뉴에 항목을 추가 할 수도 있고 이전에 해본 방법인 XML로 메뉴를 정의하고 전개자의 inflater 메소드로 메뉴를 만들 수 있다.
void show()
void dismiss()
위 두 메소드는 메뉴를 보이거나 숨긴다.
void setOnMenuItemClickListener(PopupMenu.OnMenuItemClickListener listener)
void setOnDismissListener(PopupMenu.OnDismissListener listener)
위 메소드는 메뉴 항목을 선택하거나 사라질때 이벤트를 처리하기 위한 이벤트 리스터 등록 메소드이다.
boolean onMenuItemClick(MenuItem item)
팝업 메뉴를 선택했을때 리스너의 다음 메서드가 호출된다. 인수인 item은 메뉴의 각 항목을 의미한다.
다음은 예제이다.
메뉴를 XML로 정의하기 위한 popupmenu.xml파일
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.ch9_popup_menu.Popupmenu" >
<item android:id="@+id/popup_red"
android:title="Back-Red"/>
<item android:id="@+id/popup_green"
android:title="Back-Green"/>
<item android:id="@+id/popup_blue"
android:title="Back-Blue"/>
<item android:id="@+id/popup_text"
android:title="TextColor">
<menu>
<item android:id="@+id/popup_black"
android:title="Text-Black"/>
<item android:id="@+id/popup_white"
android:title="Text-White"/>
<item android:id="@+id/popup_gray"
android:title="Text-Gray"/>
</menu>
</item>
</menu>
기본적인 레이아웃을 위한 activity_popupmenu.xml 파일
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="mOnClick"
android:text="Button"
/>
</LinearLayout>
Popupmenu.java 파일입니다.
package com.example.ch9_popup_menu;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.PopupMenu;
public class Popupmenu extends Activity {
Button mBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_popupmenu);
//버튼 등록
mBtn = (Button)findViewById(R.id.btn);
}
//버튼이 눌렸을때 여기로옴
public void mOnClick(View v){
//팝업 메뉴 객체 만듬
PopupMenu popup = new PopupMenu(this, v);
//xml파일에 메뉴 정의한것을 가져오기위해서 전개자 선언
MenuInflater inflater = popup.getMenuInflater();
Menu menu = popup.getMenu();
//실제 메뉴 정의한것을 가져오는 부분 menu 객체에 넣어줌
inflater.inflate(R.menu.popupmenu, menu);
//메뉴가 클릭했을때 처리하는 부분
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
// TODO Auto-generated method stub
//각 메뉴별 아이디를 조사한후 할일을 적어줌
switch(item.getItemId()){
case R.id.popup_red:
mBtn.setBackgroundColor(Color.RED);
break;
case R.id.popup_green:
mBtn.setBackgroundColor(Color.GREEN);
break;
case R.id.popup_blue:
mBtn.setBackgroundColor(Color.BLUE);
break;
case R.id.popup_black:
mBtn.setTextColor(Color.BLACK);
break;
case R.id.popup_white:
mBtn.setTextColor(Color.WHITE);
break;
case R.id.popup_gray:
mBtn.setTextColor(Color.GRAY);
break;
}
return false;
}
});
popup.show();
}
}
실제 실행 화면입니다.
아래를 팝업 메뉴를 띄웠을때 입니다. 위치가 버튼 아래에서 생성되네요
버튼을 빨간색으로 바꿔보았습니다.
텍스트를 그레이 색상으로 바꿔보았습니다.
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 - 프로그래스바의 확장형 시크바 (SeekBar) 만들기 (0) | 2015.08.08 |
---|---|
안드로이다 - 실행 중에 메뉴를 교체하기 (0) | 2015.08.08 |
안드로이드 - 실행 중에 메뉴 편집 (0) | 2015.08.08 |
안드로이드 - 프로그래스바(ProgressBar) 만들기 (0) | 2015.08.07 |
안드로이드 - 뷰객체를 롱터치하면 나타나는 컨텍스트 메뉴 (0) | 2015.08.02 |
안드로이드 - XML로 메뉴 정의하기 (0) | 2015.08.01 |
안드로이드 - 간단한 옵션 메뉴 만들어 보기 (0) | 2015.07.28 |
안드로이드 인터넷연결체크 ( 3g/lte/wifi ) 메서드 (1) | 2014.05.15 |