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의 사용법.
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이 완성된다.
댓글
댓글 쓰기