안규 공부방

Android > Popup Menu - 만들기

등록일 : 2017-07-05 18:42 조회수 : 93,894


 

버튼을 클릭했을때 팝업메뉴를 표시하고자 할때는 PopupMenu 위젯을 사용하면 됩니다.

오늘은 팝업메뉴를 만드는 방법을 알아보도록 하겠습니다.

activity_main.xml 파일에는 하나의 버튼이 있습니다. "btn_popupmenu" 버튼 입니다.

이버튼을 클릭했을때 팝업창을 띄우는 방법입니다.

먼저 팝업메뉴에 사용할 메뉴아이템 3개를 만듭니다.

res/menu/popup_menu.xml
 
	<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    
	<item	
		android:id="@+id/save"
		android:title="SAVE"	
	    android:icon="@android:drawable/ic_menu_save" />	
	<item
	    android:id="@+id/search" 
	    android:title="SEARCH"
	    android:icon="@android:drawable/ic_menu_search" />
	<item
	    android:id="@+id/setting" 
	    android:title="SETTING"
	    android:icon="@android:drawable/ic_menu_edit" />
	</menu>


MainActivity.java 파일에 기본 프로그래밍을 합니다.
 
		public class MainActivity extends Activity implements OnClickListener  {

			 @Override
			 protected void onCreate(Bundle savedInstanceState) {
				 super.onCreate(savedInstanceState);
				 setContentView(R.layout.activity_main);
				 findViewById(R.id.btn_popupmenu).setOnClickListener(this);		  	//로그인버튼
		 
			 }

			 @Override 
			public void onClick(View v){
				 switch( v.getId() ){
					 case R.id.btn_popupmenu:

						 //PopupMenu객체 생성. 
						 //생성자함수의 첫번재 파라미터 : Context
						 //생성자함수의 두번째 파라미터 : Popup Menu를 붙일 anchor 뷰
						 PopupMenu popup= new PopupMenu(this, v);//v는 클릭된 뷰를 의미
			   
						 //Popup Menu에 들어갈 MenuItem 추가.
						 //이전 포스트의 컨텍스트 메뉴(Context menu)처럼 xml 메뉴 리소스 사용
						 //첫번재 파라미터 : res폴더>>menu폴더>>mainmenu.xml파일 리소스
						 //두번재 파라미터 : Menu 객체->Popup Menu 객체로 부터 Menu 객체 얻어오기
			
						 getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu());
			
						 //Popup Menu의 MenuItem을 클릭하는 것을 감지하는 listener 설정
						 popup.setOnMenuItemClickListener(listener);
						 popup.show();//Popup Menu 보이기
						 break;
				 }
			}

			//Popup Menu의 MenuItem을 클릭하는 것을 감지하는 listener 객체 생성
			//import android.widget.PopupMenu.OnMenuItemClickListener 가 되어있어야 합니다.
			//OnMenuItemClickListener 클래스는 다른 패키지에도 많기 때문에 PopupMenu에 반응하는 패키지를 임포트하셔야 합니다.

			OnMenuItemClickListener listener= new OnMenuItemClickListener() {
				@Override
				public boolean onMenuItemClick(MenuItem item) {
					// TODO Auto-generated method stub
					switch( item.getItemId() ){//눌러진 MenuItem의 Item Id를 얻어와 식별
						case R.id.save:
							Toast.makeText(MainActivity.this, "SAVE", Toast.LENGTH_SHORT).show();   
							break;    				
						case R.id.search:
							Toast.makeText(MainActivity.this, "SEARCH", Toast.LENGTH_SHORT).show();
							break;
						case R.id.setting:
							Toast.makeText(MainActivity.this, "SETTING", Toast.LENGTH_SHORT).show();
							break;  
					}
					
					return false;
				}
			};

		}
팝업메뉴를 띄우는 소스가 완성되었습니다.  분석해 보면 어렵지 않게 구현할 수 있습니다.
※ 혹시 도움이 되셨다면 댓글에 한마디 남겨주세요!
작성자   비밀번호
자동글 방지     (자동글 방지 기능입니다.)
내용   댓글달기 
이메일 문의 : cak0280@nate.com  
Copyright 2000 By ENTERSOFT.KR All Rights Reserved.