TabWidget/TabHost的兩種使用方法
Android TabWidget/TabHost有兩種使用方法:
注意:第二種方法時佈局檔案中的TabWidget的id必須定義為:android:id="@android:id/tabs",FrameLayout的id必須定義為:android:id="@android:id/tabcontent" 其它控制元件沒有限制,否則報錯。
【Android進階】巢狀TabHost (TabHost中放TabHost,類似二級目錄、二級樹)
http://blog.csdn.net/feng88724/archive/2011/02/23/6203358.aspx
第一種:使用系統自帶寫好的TabHost(及繼承自TabActivity類)具體程式碼如下:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:id="@+id/tab1"
android:layout_width="fill_parent" android:layout_height="fill_parent"
androidrientation="vertical">
<TextView android:id="@+id/TextView1"
android:text="This is a tab1" android:layout_width="fill_parent"
android:layout_height="wrap_content">
</TextView>
</LinearLayout>
<LinearLayout android:id="@+id/tab2"
android:layout_width="fill_parent" android:layout_height="fill_parent"
androidrientation="vertical">
<TextView android:id="@+id/TextView2"
android:text="This is a tab2" android:layout_width="fill_parent"
android:layout_height="wrap_content">
</TextView>
</LinearLayout>
<LinearLayout android:id="@+id/tab3"
android:layout_width="fill_parent" android:layout_height="fill_parent"
androidrientation="vertical">
<TextView android:id="@+id/TextView3"
android:text="This is a tab3" android:layout_width="fill_parent"
android:layout_height="wrap_content">
</TextView>
</LinearLayout>
</FrameLayout>
package com.Aina.Android;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.TabActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;
public class Test_TabWidget extends TabActivity {
/** Called when the activity is first created. */
private TabHost tabHost;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
tabHost = this.getTabHost();
LayoutInflater li = LayoutInflater.from(this);
li.inflate(R.layout.main, tabHost.getTabContentView(), true);
tabHost.addTab(tabHost.newTabSpec("Tab_1").setContent(R.id.tab1)
.setIndicator("TAB1",
this.getResources().getDrawable(R.drawable.img1)));
tabHost.addTab(tabHost.newTabSpec("Tab_2").setContent(R.id.tab2)
.setIndicator("TAB2",
this.getResources().getDrawable(R.drawable.img2)));
tabHost.addTab(tabHost.newTabSpec("Tab_3").setContent(R.id.tab3)
.setIndicator("TAB3",
this.getResources().getDrawable(R.drawable.img3)));
tabHost.setCurrentTab(1);
// tabHost.setBackgroundColor(Color.GRAY);
tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
public void onTabChanged(String tabId) {
Dialog dialog = new AlertDialog.Builder(Test_TabWidget.this)
.setTitle("提示").setMessage(
"選中了" + tabId + "選項卡").setIcon(R.drawable.icon).setPositiveButton("確定", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
}
}).create();
dialog.show();
}
});
}
}
第二種:就是定義我們自己的tabHost:不用繼承TabActivity,具體程式碼如下:
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/TabHost01" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:layout_width="fill_parent"
android:orientation="vertical" android:layout_height="fill_parent">
<TabWidget android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:id="@+id/LinearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:text="one"
android:id="@+id/TextView01" android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
</LinearLayout>
<LinearLayout android:id="@+id/LinearLayout2"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:text="two"
android:id="@+id/TextView02" android:layout_width="fill_parent"
android:layout_height="wrap_content">
</TextView>
</LinearLayout>
<LinearLayout android:id="@+id/LinearLayout3"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:text="three"
android:id="@+id/TextView03" android:layout_width="fill_parent"
android:layout_height="wrap_content">
</TextView>
</LinearLayout>
</FrameLayout>
</LinearLayout>
</TabHost>
package com.Aina.Android;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.widget.TabHost;
public class Test_TabHost extends Activity {
/** Called when the activity is first created. */
private TabHost tabHost;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try{
tabHost = (TabHost) this.findViewById(R.id.TabHost01);
tabHost.setup();
tabHost.addTab(tabHost.newTabSpec("tab_1")
.setContent(R.id.LinearLayout1)
.setIndicator("TAB1",this.getResources().getDrawable(R.drawable.img1)));
tabHost.addTab(tabHost.newTabSpec("tab_2")
.setContent(R.id.LinearLayout2).setIndicator("TAB2",
this.getResources().getDrawable(R.drawable.img2)));
tabHost.addTab(tabHost.newTabSpec("tab_3")
.setContent(R.id.LinearLayout3).setIndicator("TAB3",
this.getResources().getDrawable(R.drawable.img3)));
tabHost.setCurrentTab(1);
}catch(Exception ex){
ex.printStackTrace();
Log.d("EXCEPTION", ex.getMessage());
}
}
}
注意:第二種方法時佈局檔案中的TabWidget的id必須定義為:android:id="@android:id/tabs",FrameLayout的id必須定義為:android:id="@android:id/tabcontent" 其它控制元件沒有限制,否則報錯。
【Android進階】巢狀TabHost (TabHost中放TabHost,類似二級目錄、二級樹)
http://blog.csdn.net/feng88724/archive/2011/02/23/6203358.aspx
轉自:http://gundumw100.iteye.com/blog/853967
相關文章
- TabHost與TabWidget的簡單用法
- Java異常處理的兩種方式以及自定義異常的使用方法Java
- CSS的三種使用方法CSS
- xml方式的 android的 tabhost用法例項XMLAndroid
- HTTP代理IP的三種使用方法HTTP
- BOM的兩種理解
- 動態ip代理的三種使用方法
- 四種XML操作方式的基本使用方法XML
- C# @符號的多種使用方法C#符號
- CSS的兩種盒模型CSS模型
- 防抖的兩種操作
- NoClassDefFoundError的兩種情況Error
- 常用的兩種加密原理加密
- Treeset的兩種排序方法排序
- ChatTTS的兩種使用方式TTS
- vue3.0 的 Composition API 的一種使用方法VueAPI
- vue 跳轉的兩種方法Vue
- redis的兩種持久化方案Redis持久化
- 住宅代理的兩種型別型別
- JS 垃圾回收的兩種方式JS
- Docker打包映象的兩種方式Docker
- sparkrdd轉dataframe的兩種方式Spark
- 兩種快速打造App的方法APP
- 提交Application的兩種方式APP
- oracle的兩種global temporary table!Oracle
- 兩種負載均衡的配置。負載
- 《關雎》的兩種英譯
- 建立Session物件的兩種方式Session物件
- Laravel 表單驗證器的幾種使用方法Laravel
- Billboards 技術在Unity 中的幾種使用方法Unity
- mvcc的兩種層次的理解MVC
- MacOS下NSWindowZoomButton兩種形式(兩種綠色交通燈)MacOOM
- 兩種動態建立表格的方法
- 雜湊表的兩種實現
- java物件頭的兩種儲存Java物件
- Spark的兩種核心Shuffle詳解Spark
- zabbix agent 的兩種安裝方式
- HTTP代理的兩種連線方式HTTP