在Android應用中,經常會用到TabHost選項卡,這裡借花獻佛,把apiDemo例子中的使用方法列舉出來,,,
常用的方法有三種:
1. 從一個layout id建立各個tab頁
public class Tabs1 extends TabActivity {<br /> @Override<br /> protected void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> TabHost tabHost = getTabHost();</p><p> LayoutInflater.from(this).inflate(R.layout.tabs1, tabHost.getTabContentView(), true);<br /> tabHost.addTab(tabHost.newTabSpec("tab1")<br /> .setIndicator("tab1")<br /> .setContent(R.id.view1));<br /> tabHost.addTab(tabHost.newTabSpec("tab3")<br /> .setIndicator("tab2")<br /> .setContent(R.id.view2));<br /> tabHost.addTab(tabHost.newTabSpec("tab3")<br /> .setIndicator("tab3")<br /> .setContent(R.id.view3));<br /> }<br />}
2. 動態建立一個view來做為tab頁的內容
public class Tabs2 extends TabActivity implements TabHost.TabContentFactory {<br /> @Override<br /> protected void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> final TabHost tabHost = getTabHost();<br /> tabHost.addTab(tabHost.newTabSpec("tab1")<br /> .setIndicator("tab1", getResources().getDrawable(R.drawable.star_big_on))<br /> .setContent(this));<br /> tabHost.addTab(tabHost.newTabSpec("tab2")<br /> .setIndicator("tab2")<br /> .setContent(this));<br /> tabHost.addTab(tabHost.newTabSpec("tab3")<br /> .setIndicator("tab3")<br /> .setContent(this));<br /> }<br /> /** {@inheritDoc} */<br /> public View createTabContent(String tag) {<br /> final TextView tv = new TextView(this);<br /> tv.setText("Content for tab with tag " + tag);<br /> return tv;<br /> }<br />}
3. 傳遞一個intent來傳遞參數,並以新啟動的activity做為tab頁的內容,這個應該是比較方便傳遞參數的。。。
public class Tabs3 extends TabActivity {<br /> @Override<br /> protected void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> final TabHost tabHost = getTabHost();<br /> tabHost.addTab(tabHost.newTabSpec("tab1")<br /> .setIndicator("list")<br /> .setContent(new Intent(this, List1.class)));<br /> tabHost.addTab(tabHost.newTabSpec("tab2")<br /> .setIndicator("photo list")<br /> .setContent(new Intent(this, List8.class)));</p><p> // This tab sets the intent flag so that it is recreated each time<br /> // the tab is clicked.<br /> tabHost.addTab(tabHost.newTabSpec("tab3")<br /> .setIndicator("destroy")<br /> .setContent(new Intent(this, Controls2.class)<br /> .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));<br /> }<br />}<br />