반응형



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>

  

반응형

+ Recent posts