일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Image.network
- Flutter 강좌
- AppBar
- sqlite
- navigator
- Scaffold
- listview
- HTTP
- Flutter 예제
- WillPopScope
- Cached Image
- 반석천
- Flutter Tutorial
- node.js
- MainAxisAlignment
- Column Widget
- Networking
- InkWell
- Load Image
- Row
- Hello World
- Flutter 앱 배포
- ListView.builder
- flutter
- Snackbar
- ListTile
- CrossAxisAlignment
- Row Widget
- FutureBuilder
- Flutter Example
- Today
- Total
꿈꾸는 시스템 디자이너
TabActivity 구성 방법(동적 방법) 본문
1. TabActivity를 상속하여 구현하는 방법
import android.app.TabActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;
public class HelloTabs extends TabActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TabHost tabHost = getTabHost();
/**
* LayoutInflater.from(this)
* -> LayoutInflater 생성
* .inflate(R.layout.main, tabHost.getTabContentView(), true)
* -> main.xml 파일을 객체화
* -> tabHost의 TabContentView에다 main.xml 객체를 연결
* -> getTabContentView()는 TabContentView를 생성하여 반환함. setContentView()효과를 동시에 가짐
*/
LayoutInflater.from(this).inflate(R.layout.main,
tabHost.getTabContentView(), true);
/**
* .setIndicator("tab1").setContent(R.id.view1)
* ->"tab1" 이름을 가지는 인디케이터에 view.xml 객체를 등록
* tabHost.newTabSpec("tab1").setIndicator("tab_1")
* -> tab1 TabSepc 객체을 만들고 인디케이터를 연결함. 인디케이셔에는 "tab_1"라는 레벨이 표시됨
* -> TabSpec을 객체는 newTabSpec()을 통해 인스턴스를 생성함
*/
tabHost.addTab(tabHost.newTabSpec("tab1")
.setIndicator("tab_1")
.setContent(R.id.view1));
tabHost.addTab(tabHost.newTabSpec("tab2")
.setIndicator("tab_2")
.setContent(R.id.view2));
tabHost.addTab(tabHost.newTabSpec("tab3")
.setIndicator("tab_3")
.setContent(R.id.view3));
}
}
2. TabActivity 상속과 함께 TabContentFactory를 통해 구현하는 방법
import android.app.TabActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TabHost;
import android.widget.TextView;
// TabActivity로 클래스 생성
// 탭의 내용물을 생성하기 위해 구현하기 위해 TabContentFactory 구현
public class HelloTabs extends TabActivity implements TabHost.TabContentFactory {
//View v;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//getTabHost()를 호출하여 탭호스트 생성
TabHost tabHost = getTabHost();
//인플레이터를 생성하고, 본 엑티비티의 TabContentView에 main.xml 객체를 연결함
LayoutInflater.from(this).inflate(R.layout.main, tabHost.getTabContentView(), true);
//TabSpec클래스의 인스튼터를 newTabSpec()을 호출하여 생성. factory 방식
tabHost.addTab(tabHost.newTabSpec("tab1")
.setIndicator("tab1", getResources().getDrawable(android.R.drawable.star_big_on))
.setContent(R.id.view1));
tabHost.addTab(tabHost.newTabSpec("tab2")
.setIndicator("tab2", getResources().getDrawable(android.R.drawable.star_big_off))
.setContent(R.id.view2));
/*
* .setContent(this)
* ->this를 통해 컨텐트를 설정한다는 것은 본 activity자체가 컨텐트가 된다는 것을 의미함
* -> 즉 TabContentFactory를 구현하는 createTabContent()가 호출됨
* -> lazy binding 되어서, 사용자가 tab3를 처음 선택했을 때 View 객체가 생성됨
*/
tabHost.addTab(tabHost.newTabSpec("tab3")
.setIndicator("tab3", getResources().getDrawable(android.R.drawable.stat_notify_call_mute))
.setContent(this));
//.setContent(Intent intent)를 이용하여 다른 액티비티를 호출할 수도 있음
}
//TabContentFactory의 구현 메소드
public View createTabContent(String tag) {
TextView tv = new TextView(this);
tv.setText("Content for tab with tag " + tag);
return tv;
}
}
'Development > Android' 카테고리의 다른 글
명시적 인텐트를 통한 Activity 실행 (0) | 2012.04.04 |
---|---|
TabActivity 구성 방법(xml 레이아웃 파일 이용) (0) | 2012.04.04 |
레이아웃 인플레이션(Layout Inflation) (0) | 2012.04.04 |
기본적인 View 사용법 3 (0) | 2012.04.03 |
기본적인 View 사용법 2 (0) | 2012.04.03 |