안녕하세요, 개발을 하다가 막히는 부분이 생겨 질문드립니다.


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>




==========================================================================================