AndroidでTab表示
AndroidでTabを使う方法は2つある
・Activityを継承した方法
・TabAcitvityをを継承する方法
今回はTabActivityを継承した方法で実装する
■手順
TabActivityを継承
プログラムからTabHostを追加
TabSpecでTabを追加
手順1 プロジェクトの新規作成
アプリ概要
- Project Name : SampleTabActivity
- Application Name : SampleTabActivity
- Package Name : com.example.tab
- Activity Name : SampleTabActivity
手順2 Activityの変更
継承元をActivityからTabActivityに変更する
- エラーだらけになるのでimportを変更する
- Ctrl + Shift + o で自動importされ、エラーがなくなる
ソース変更
SampleTabActivityクラスを変更する
- setContentView(R.layout.main);を削除
- TabHostの生成
- LayoutInflaterを使って、UIを構築
- LayoutInflaterはActivity上でViewが生成された時に割り込みをかけレイアウトを再構築したり、onCreateViewメソッドを実装したActivityのレイアウト構成を取得したりとかできる。詳しくはググれとしか言えないが、ViewにTabを使うときとか必須
- 変更後のソース
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TabHost tabHost = getTabHost(); LayoutInflater.from(this).inflate(R.layout.main, tabHost.getTabContentView(), true); }
手順 3レイアウトの変更
main.xmlを変更する
- デフォルトで作成されているLinearLayoutを削除
- FrameLayoutの追加
- TextViewを3つ追加
- id:TextView01〜03
- Text:tab1 no text 〜tab3 no text
- LayoutHeight:fill_parent
- Layoutwidth:fill_parent
手順4 Activityの変更2
ソース変更
Tabを変更したときにわかりやすくするため、各TextViewの背景色を設定(赤、緑、青)
TabSpecを3つ生成し、TabHostに追加
- TabSpec:実際に表示されるTabのこと
- TabSpec#setIndicator:Tabに表示する文字
- TabSpec#setContent:Tabが選択された時に表示するView
ソース
package com.example.tab; import android.app.TabActivity; import android.graphics.Color; import android.os.Bundle; import android.view.LayoutInflater; import android.widget.TabHost; import android.widget.TextView; import android.widget.TabHost.TabSpec; public class SampleTabActivity extends TabActivity { private TextView txt1; // tab1のTextView private TextView txt2; // tab2のTextView private TextView txt3; // tab3のTextView /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TabHost tabHost = getTabHost(); LayoutInflater.from(this).inflate(R.layout.main, tabHost.getTabContentView(), true); this.txt1 = (TextView) findViewById(R.id.TextView01); this.txt1.setBackgroundColor(Color.RED); this.txt2 = (TextView) findViewById(R.id.TextView02); this.txt2.setBackgroundColor(Color.GREEN); this.txt3 = (TextView) findViewById(R.id.TextView03); this.txt3.setBackgroundColor(Color.BLUE); TabSpec tab1 = tabHost.newTabSpec("tab1"); tab1.setIndicator("tab1"); tab1.setContent(R.id.TextView01); TabSpec tab2 = tabHost.newTabSpec("tab2"); tab2.setIndicator("tab2"); tab2.setContent(R.id.TextView02); TabSpec tab3 = tabHost.newTabSpec("tab3"); tab3.setIndicator("tab3"); tab3.setContent(R.id.TextView03); tabHost.addTab(tab1); tabHost.addTab(tab2); tabHost.addTab(tab3); } }