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;
}
};
}
팝업메뉴를 띄우는 소스가 완성되었습니다. 분석해 보면 어렵지 않게 구현할 수 있습니다.