안녕하세요, 개발을 하다가 막히는 부분이 생겨 질문드립니다.
Tabhost를 이용하여 탭바를 구현하려고 하는데요.
안드로이드 기본 탭디자인을 바꿔 텍스트를 없애고 이미지로 나타내려고 합니다.
그리고 탭 클릭 시 해당탭의 이미지를 바꿔주려고 방법을 검색해보니
selector를 사용하는 방법이 있어서 selector item을 정의한 tab_button_0x.xml 파일과
TabNavigator.java 소스코드를 구현해서 에뮬레이터로 실행해보니 탭바에 이미지가 보이지 않습니다.
setIndicator에 제가 만든 CustomTab 클래스를 파라미터로 넘겨주었는데요,
xml 객체를 파라미터로 넘겨주고 받는 방법이 처음이라 어떻게 해야할지 모르겠네요.
처음에는 CustomTab 클래스안에 이미지뷰에도 넣어보고 Drawable객체도 넣어봤는데 마찬가지로
탭바에 이미지가 출력이 되지 않더군요...
제가 안드로이드 개발을 시작한지 얼마 안되어 많이 부족합니다
그래서 이곳 저곳 검색해봤는데 소스코드를 찾기가 어려워 질문하게되었습니다.
CustomTab 클래스를 어떻게 구현해야하는 건지
setIndicator 에서는 파라미터를 어떻게 넘겨주어야 하는지를
질문드리면 될 것 같습니다...
개발자 분들의 상세한 조언 부탁드리겠습니다.
수고하세요~
==========================================================================================
TabNavigator.java
public class TabNavigator extends TabActivity implements OnTabChangeListener { // TabActivity
TabHost tabhost;
Resources res;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tabhost = getTabHost();
res = getResources();
// Make Intent
Intent Activity_01 = new Intent (TabNavigator.this, Activity_01.class);
Intent Activity_02 = new Intent (TabNavigator.this, Activity_02.class);
Intent Activity_03 = new Intent (TabNavigator.this, Activity_03.class);
Intent Activity_04 = new Intent (TabNavigator.this, Activity_04.class);
// Add Tab
tabhost .addTab(tabhost.newTabSpec("First")
.setIndicator(new CustomTab(this, res.getDrawable(R.drawable.tab_button_01)))
.setContent(Activity_01));
tabhost .addTab(tabhost.newTabSpec("Second")
.setIndicator(new CustomTab(this, res.getDrawable(R.drawable.tab_button_02)))
.setContent(Activity_02));
tabhost .addTab(tabhost.newTabSpec("Third")
.setIndicator(new CustomTab(this, res.getDrawable(R.drawable.tab_button_03)))
.setContent(Activity_03));
tabhost .addTab(tabhost.newTabSpec("Fourth")
.setIndicator(new CustomTab(this, res.getDrawable(R.drawable.tab_button_04)))
.setContent(Activity_04));
tabhost.setCurrentTab(0);
}
private class CustomTab extends LinearLayout {
public CustomTab (Context c, Drawable drawable) {
super(c);
/*
do Something
*/
addView(Something);
}
}
}
==========================================================================================
tab_button_01.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Non Focused state -->
<Item
android:state_focused="false"
android:state_selected="false"
android:state_pressed="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawable="@drawable/icon"
/>
<!-- Focused state -->
<Item
android:state_focused="true"
android:state_selected="false"
android:state_pressed="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawable="@drawable/tab_btn_01_r"
/>
<!-- Pressed state -->
<Item
android:state_pressed="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawable="@drawable/tab_btn_01_r"
/>
</selector>
==========================================================================================




/*
do Something
*/
addView(Something);
이부분에 적당한 소스 넣으시면 될것 같은데,, 넣으셨지요? 저부분에서 해결해야 할것 같아요,