Android - 메뉴(Menu) / TabHost


이 글에서는 어플리케이션에서 많이 써보았던 그 메뉴에 대해 적는다.

메뉴를 사용하기 전에, 현재 프로젝트의 app/res/ 에서 menu 디렉토리가 존재하는지 확인해본다.

없는 경우,  app을 오른쪽 클릭하고, New > Android resource directory
Resource type을 menu로 고르고 OK 해서 디렉토리를 추가해주어야 한다.

디렉토리가 생겼으면, menu폴더를 오른쪽 클릭해서 Menu resource file을 추가하면 된다.

이제 메뉴의 구성요소를 보겠다.


1. 메뉴종류/ 메소드


OptionsMenu : 타이틀 옆의 ...(메뉴버튼)을 눌러서 작동하는 기본적인 메뉴.


java파일에서 메소드
onCreateOptionsMenu()
onOptionsItemSelected() 를 입력하면 자동으로 오버라이딩해준다.
이때 자신이 부르고싶은 메뉴파일이 menu2.xml일 경우,

getMenuInflater().inflate(R.menu.menu2, menu);

를 onCreateOptionsMenu() 내에 작성하면 메뉴가 장착된다.

onOptionsItemSelected()
메뉴의 Item을 선택했을때 동작을 정의할수있다. 
Item은 item.getItemid()로 알아낼수 있다.

OptionsMenu를 사용하여 구현한 메뉴. 모양은 ContextMenu도 동일하다.

ContextMenu : 특정 위젯을 길게 누르면 나오는 메뉴.


java파일에서 메소드
onCreateContextMenu()
onContextItemSelected() 를 입력하면 자동으로 오버라이딩해준다.
이때 어떤 위젯을 누르면 나오게할지 설정해야한다. 예로, TextView로 선언한 text 위젯에서 menu2를 부르겠다면,

if (v == text) getMenuInflater().inflate(R.menu.menu2, menu);

를 onCreateContextMenu()  내에 적어주어야 한다.

onContextItemSelected() 
메뉴의 Item을 선택했을때 동작을 정의할수있다. 
Item은 item.getItemid()로 알아낼수 있다.


2. TabHost

FrameLayout의 특징을 이용해서 탭으로 화면을 전환할수 있게 만든 뷰컨테이너이다.

TabHost로 구현한 각종 계산기의 모습.

TabHost의 사용법.

1. Layout에서 TabHost를 찾아서 끌어놓은다음,
android:id= 를 이용하여 id를 설정해놓는다.

2. 엑티비티 java파일에서 다음과같이 변수를 선언한다. 이름은 꼭 tabhost일 필요없다.

TabHost tabhost;

3. TabHost의 탭 이름을 초기화하기위해 초기화할 위치에서 다음 문을 추가한다.
Indicator부분에 원하는 이름을 적어놓으면 된다.

tabhost.setup();
tabhost.addTab(tabhost.newTabSpec("BMI").setContent(R.id.tab1)
        .setIndicator("BMI계산기"));
tabhost.addTab(tabhost.newTabSpec("면적").setContent(R.id.tab2)
        .setIndicator("면적 계산기"));

4. 여기까지 했다면 2개의 텝에 각각 'BMI계산기', '면적 계산기' 이름이 붙은 Layout이 완성된다.

댓글

이 블로그의 인기 게시물

HW #2 - 학점 계산 / 레스토랑 예약 activity

HW #10 - My Canvas(단순한 그림판)

Windows에서 안드로이드 어플리케이션 개발환경 구축 (Android Studio) - 2. Android Studio 설치