태그: Context Menu

이번에는 특정 컨트롤을 롱클릭하였을 때 나오는 컨텍스트 메뉴(Context Menu)를 사용하는 실습을 해 봅시다.

[그림] Context 메뉴 실습 실행화면
[그림] Context 메뉴 실습 실행화면
 이번 실습에서는 두 개의 TextView를 배치하고 각각의 TextView 개체마다 서로 다른 Context Menu를 띄우는 실습을 할 거예요.

먼저 activity_main.xml 파일에 두 개의 TextView를 배치하세요.

 

app>>res 하위에 menu 폴더를 생성한 후에 두 개의 메뉴 파일(menu1.xml, menu2.xml)을 추가하세요.

[그림] 메뉴 폴더와 xml로 메뉴 파일 추가
[그림] 메뉴 폴더와 xml로 메뉴 파일 추가

다음은 menu1.xml 파일의 내용입니다.

 

다음은 menu2.xml 파일의 내용입니다.

 

두 개의 TextView 개체를 참조할 멤버 필드를 선언하고 두 번째 TextView의 textSize 속성 값을 기억할 멤버 필드를 선언하고 30으로 초기화합시다.

 

onCreate 메서드에서 두 개의 TextView 개체를 참조합니다. 그리고 registerForContextMenu 메서드를 통해 두 개체에 Context Menu를 등록합니다.

 

onCreateContextMenu 메서드를 재정의하여 첫 번째 인자로 전달받은 개체에 따라 적절한 메뉴를 설정합니다. 이 때 MenuInflater 개체의 inflate 메서드를 호출합니다.

 

onContextItemSelected 메서드를 재정의하세요. 그리고 선택한 메뉴 항목에 따라 적절한 처리를 수행하게 작성하세요.

 

다음은 MainActivity.java 파일의 소스 코드입니다.