Context Menu : 특정 뷰(View)를 오래 누르고 있으면 나타나는 메뉴(일반 PC에서 마우스 오른쪽버튼의 역할)
버튼(Button) 뷰를 하나 만들고 이 버튼에 컨텍스트 메뉴를 만들겁니다.
짧게 클릭하면 'Normal Cliking'이라는 글씨가 보입니다.
이 버튼을 길게 누르고 있으면 Context Menu가 나타납니다.
특정 메뉴 아이템을 선택하면 해당하는 Toast가 표시되는 예제소스입니다.
먼저 실행 화면입니다.
메인화면 일반적인 버튼클릭 길게눌러서 Context Menu 발생
컨텍스트 메뉴(Context Menu)의 각 menuItem 선택시의 Toast
소스코드
MainActivity.java |
public class MainActivity extends Activity {
Button btn_Contextmenu; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
//Button View 객체 참조 btn_Contextmenu= (Button)findViewById(R.id.btn_contextmenu);
//btn_Contextmenu 버튼 뷰를 Context Menu로 등록 //어떠한 View 객체도 Context Menu로 등록 가능 registerForContextMenu(btn_Contextmenu); }
//컨텍스트 메뉴(Context Menu)로 등록된 View(btn_contextmenu)가 길게 눌러질때 호출되는 메소드 @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // TODO Auto-generated method stub
//res폴더의 menu플더안에 xml로 MenuItem추가하기. //mainmenu.xml 파일을 java 객체로 인플레이트(inflate)해서 menu객체에 추가
getMenuInflater().inflate(R.menu.mainmenu, menu);
super.onCreateContextMenu(menu, v, menuInfo); }
//컨텍스트 메뉴(Context Menu)의 MenuItem을 선택했을 때 자동으로 호출되는 메소드 @Override public boolean onContextItemSelected(MenuItem item) { // TODO Auto-generated method stub
switch( item.getItemId() ){//눌러진 MenuItem의 Item Id를 얻어와 식별 case R.id.save:
Toast.makeText(this, "SAVE", Toast.LENGTH_SHORT).show(); break;
case R.id.search:
Toast.makeText(this, "SEARCH", Toast.LENGTH_SHORT).show(); break;
case R.id.setting:
Toast.makeText(this, "SETTING", Toast.LENGTH_SHORT).show(); break;
}
return super.onContextItemSelected(item); }
//Button 클릭시에 자동으로 호출되는 callback Method... public void mOnClick(View v){
switch( v.getId() ){
case R.id.btn_contextmenu: //일반적인 버튼의 짧은 클릭시 토스트 (Toast) 발생
Toast.makeText(this, "Normal Clicking", Toast.LENGTH_SHORT).show();
break; }
} } |
메뉴아이템을 설계하는 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="LOAD" android:icon="@android:drawable/ic_menu_search" />
<item android:id="@+id/setting" android:title="SETTING" android:icon="@android:drawable/ic_menu_edit" /> </menu> |
'소소한 소스코드' 카테고리의 다른 글
[안드로이드 Android] 리스트 뷰(ListView) 1. android:entries 속성 (0) | 2015.06.08 |
---|---|
[안드로이드 Android] 팝업 메뉴(Popup Menu) (0) | 2015.06.04 |
[안드로이드 Android] 옵션메뉴(Option Menu)와 액션바 메뉴(ActionBar Menu) (0) | 2015.06.03 |
[안드로이드 Android] 시스템 인텐트(Intent)를 이용한 전화걸기, 문자보내기, 이메일보내기 etc (0) | 2015.05.29 |
[안드로이드 Android] AsyncTask를 이용한 ProgressDialog (0) | 2015.04.20 |