Popup Menu : 특정 명령에 따라 특정 위치에 팝업(Popup)되어 서브 메뉴용도로 사용할 수 있는 메뉴
버튼(Button) 을 누르면 그 버튼에 Popup Menu가 나타납니다.
특정 메뉴 아이템을 선택하면 해당하는 Toast가 표시되는 예제소스입니다.
먼저 실행 화면입니다.
메인화면 버튼 클릭으로 Popup Menu 발생
팝업 메뉴(Popup Menu)의 각 menuItem 선택시의 Toast
소스코드
MainActivity.java |
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }
//Button 클릭시에 자동으로 호출되는 callback Method... public void mOnClick(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.mainmenu, popup.getMenu());
//Popup Menu의 MenuItem을 클릭하는 것을 감지하는 listener 설정 popup.setOnMenuItemClickListener(listener);
popup.show();//Popup Menu 보이기
break; }
}//mOnClick Method..
//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; } };
} |
메뉴아이템을 설계하는 XML 리소스를 만듭니다.
(이전 옵션메뉴 포스트의 xml파일을 가져와도 됨)
res폴더 안에 'menu'라는 이름으로 폴더를 만드세요(절대 이름 틀리면 안됨)
만들어진 menu폴더안에 mainmenu.xml 파일을 하나 추가하세요.
메뉴 XML 리소스 파일
mainmenu.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> |