[Android] Tab Android 2012. 3. 5. 17:01

여기서 탭은 CS에서 본 탭과 동일한 기능이다.

간단하게 라이너 레이아웃과 하나의 텍스트뷰를 넣고 각기 탭에 대한 기능을 구현 해 보면 다음과 같다.

일단 먼저 XML 파일은 생략한다. 처음에 프레임 레이아웃을 먼저 잡아주고 그 안에 라이너와 텍스트뷰를 넣어서 구성했다.

public class ImageViewActivity extends TabActivity{
 TabHost m_tab;
 public void onCreate(Bundle savedInstanceState){
  super.onCreate(savedInstanceState);  
  TabHost m_tab = getTabHost();
  
  LayoutInflater inflater = LayoutInflater.from(this);
  inflater.inflate(R.layout.main, m_tab.getTabContentView(),true);  
  m_tab.addTab(m_tab.newTabSpec("tag").setIndicator("first").setContent(R.id.first));
  m_tab.addTab(m_tab.newTabSpec("tag").setIndicator("second").setContent(R.id.second));
  m_tab.addTab(m_tab.newTabSpec("tag").setIndicator("third").setContent(R.id.m_txt_view));
 } 
}

간단히 표시 해 보면 위와 같이 할 수 있다. 다른 방법으로는 setContent 형식으로 표시 하는 방법이 있다.

그 코드는 다음과 같다.

public class ImageViewActivity extends TabActivity{
 Factory m_factory; 
 public void onCreate(Bundle savedInstanceState){
  super.onCreate(savedInstanceState);  
  m_factory = new Factory(this);
  TabHost tab = getTabHost();
  
  Drawable icon = getResources().getDrawable(R.drawable.ic_launcher);
  LayoutInflater inflater = LayoutInflater.from(this);
  inflater.inflate(R.layout.main, tab.getTabContentView(),true);  
  tab.addTab(tab.newTabSpec("tag1").setIndicator("first",icon).setContent(m_factory));
  tab.addTab(tab.newTabSpec("tag2").setIndicator("second",icon).setContent(m_factory));
  tab.addTab(tab.newTabSpec("tag3").setIndicator("third",icon).setContent(m_factory));
 } 
}

class Factory implements TabHost.TabContentFactory{
 Context m_context;
 Factory(Context context){
  m_context = context;
 }
 
 public View createTabContent(String tag){
  TextView text = new TextView(m_context);
  text.setText(tag);
  return text;
 }
}

별반 차이는 크게 없다. 하나 있다면 별도의 클래스를 생성하여 보낸 것인데 여기서 TabContentFactory를 확장하여 처리를 하였다.

이런 경우 각기 tag 값에 의해 다양하게 화면을 구성 할 수가 있다.

물론 Intent 또한 setContent에 적용하여 사용 할 수도 있다.