안드로이드 개발 정보
(글 수 1,067)
아시는 분도 많을거라 생각하지만....
정리 삼아서 적어봅니다.
아이폰의 TabView가 하단에 위치한 관계로...
가끔 안드로이드를 기획하시는 분들 중에 Tab을 하단에 위치하게 해달라는 분들이 계실껍니다.
XML을 이용한 방식에서 Tab을 하단으로 내릴 수 있는데요.
와 같이 XML을 정의하시면 TabWidget이 아래로 붙고 그 위에 FramLayout이 올라오게 됩니다.
이젠 Tab을 밑으로 내렸으니... Tab의 이미지를 변경을 해볼까 합니다.
머 고수 분들은 이미 다들 알고 계실 내용이겠지만....
이제 막 접하신 분들은 Tab을 잘 활용하지 못하실 경우도 있을 겁니다...
그래서 간단하게 Tab을 이용한 방법이 이런게 있다는 것을 알려드리기 위해...
미약하나마 몇자 적어보았습니다...
뒤의 내용이나 여러 내용과 중복일 수도 있고 아닐 수도 있습니다.
중복이면 자삭하도록 하지요... ㅎㅎㅎㅎ
정리 삼아서 적어봅니다.
아이폰의 TabView가 하단에 위치한 관계로...
가끔 안드로이드를 기획하시는 분들 중에 Tab을 하단에 위치하게 해달라는 분들이 계실껍니다.
XML을 이용한 방식에서 Tab을 하단으로 내릴 수 있는데요.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TabHost android:id="@+id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent"> <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent"> <TabWidget android:id="@android:id/tabs" android:layout_alignParentBottom="true" android:layout_width="fill_parent" android:layout_height="wrap_content"/> <FrameLayout android:id="@android:id/tabcontent" android:layout_above="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="fill_parent"> </FrameLayout> </RelativeLayout> </TabHost> </LinearLayout>
와 같이 XML을 정의하시면 TabWidget이 아래로 붙고 그 위에 FramLayout이 올라오게 됩니다.
이젠 Tab을 밑으로 내렸으니... Tab의 이미지를 변경을 해볼까 합니다.
//탭에 들어갈 각 View를 선언합니다. View vTab1 = null; View vTab2 = null; View vTab3 = null; View vTab4 = null; ........ //각 View에 layoutinflate를 이용해 Tab에 들어갈 layout을 정합니다. 이미지와 텍스트를 복합적으로 넣을 때 //편리하게 이용됩니다. vTab1 = layout.inflate(R.layout.nav, null); vTab2 = layout.inflate(R.layout.nav, null); vTab3 = layout.inflate(R.layout.nav, null); vTab4 = layout.inflate(R.layout.nav, null); ........ //이미지를 넣고 싶으시면 위의 layout에 ImageView를 선언한뒤, //findViewById로 ImageView를 불러다 이미지를 셋팅 시킵니다. ImageView test = (ImageView) vTab1.findViewById(R.id.testImage); test.setBackgroundResource(R.drawable.tab_indicator1); test = (ImageView) vTab2.findViewById(R.id.testImage); test.setBackgroundResource(R.drawable.tab_indicator2); .......... //해당 View들을 tabHost에 add 할때 setIndicator에 넣습니다. spec = tabHost.newTabSpec(getString(R.string.smartmatch)); spec.setContent(new Intent(this, Smartmatch_activity.class)); spec.setIndicator(vTab1); tabHost.addTab(spec);
머 고수 분들은 이미 다들 알고 계실 내용이겠지만....
이제 막 접하신 분들은 Tab을 잘 활용하지 못하실 경우도 있을 겁니다...
그래서 간단하게 Tab을 이용한 방법이 이런게 있다는 것을 알려드리기 위해...
미약하나마 몇자 적어보았습니다...
뒤의 내용이나 여러 내용과 중복일 수도 있고 아닐 수도 있습니다.
중복이면 자삭하도록 하지요... ㅎㅎㅎㅎ
2010.08.10 21:59:35
이미 프로젝트에서 쓰고 있지만 좋은 팁이네요...//각 View에 layoutinflate를 이용해 Tab에 들어갈 layout을 정합니다. 이미지와 텍스트를 복합적으로 넣을 때
//편리하게 이용됩니다.
이부분은 설명이 쪼금 이상하네요. Inflate를 이용해서 View를 생성한 것은
탭 Indicator를 더 자유롭게 수정하기 위한거라고 해야겠죠. 유저의 취향에 맞게 말이죠.
기존 Tab Indicator에도 Icon과 Text가 존재하니까 넣는것 자체에는 문제가 없자나요...
오히려 기존의 Indicator쪽이 넣기 쉽죠.... 인터페이스(함수)도 잘 나와있고...
ImageView의 그림을 넣는 부분이 아닌...
Tab Indicator자체의 배경을 바꾸는 부분이 나와있었다면
초급자분들께 더 도움이 되었을지도 모르겠네요..
지금 있는것만으로도 충분히 훌륭하지만 말이죠 ^^
2010.08.12 17:33:53
Indicator를 동적으로 생성해서 적용한 유사한 방식입니다. 거의 동일한 방식인데 저는 에니메이션을 추가했네요 ^^; http://test.androday.com:7788/blog/?p=424