您的位置:首页 > 其它

TabHost两种实现方式

2011-01-17 11:55 267 查看
第一种:继承TabActivity,从TabActivity中用getTabHost()方法获取TabHost。只要定义具体Tab内容布局就行了.

xml布局:

Java代码

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent" android:layout_height="fill_parent">

<LinearLayout android:id="@+id/widget_layout_Blue"

android:layout_width="fill_parent" android:layout_height="fill_parent"

android:orientation="vertical" >

<EditText android:id="@+id/widget34" android:layout_width="fill_parent"

android:layout_height="wrap_content" android:text="EditText"

android:textSize="18sp">

</EditText>

<Button android:id="@+id/widget30" android:layout_width="wrap_content"

android:layout_height="wrap_content" android:text="Button">

</Button>

</LinearLayout>

<LinearLayout android:id="@+id/widget_layout_red"

android:layout_width="fill_parent" android:layout_height="fill_parent"

android:orientation="vertical" >

<AnalogClock android:id="@+id/widget36"

android:layout_width="wrap_content" android:layout_height="wrap_content">

</AnalogClock>

</LinearLayout>

<LinearLayout android:id="@+id/widget_layout_green"

android:layout_width="fill_parent" android:layout_height="fill_parent"

android:orientation="vertical">

<RadioGroup android:id="@+id/widget43"

android:layout_width="166px" android:layout_height="98px"

android:orientation="vertical">

<RadioButton android:id="@+id/widget44"

android:layout_width="wrap_content" android:layout_height="wrap_content"

android:text="RadioButton">

</RadioButton>

<RadioButton android:id="@+id/widget45"

android:layout_width="wrap_content" android:layout_height="wrap_content"

android:text="RadioButton">

</RadioButton>

</RadioGroup>

</LinearLayout>

</FrameLayout>

java代码:

super.onCreate(savedInstanceState);

myTabhost=this.getTabHost();

//get Tabhost

LayoutInflater.from(this).inflate(R.layout.main, myTabhost.getTabContentView(), true);

myTabhost.setBackgroundColor(Color.argb(150, 22, 70, 150));

myTabhost

.addTab(myTabhost.newTabSpec("One")// make a new Tab

.setIndicator("A")

// set the Title and Icon

.setContent(R.id.widget_layout_Blue));

// set the layout

myTabhost

.addTab(myTabhost.newTabSpec("Two")// make a new Tab

.setIndicator("B",

getResources().getDrawable(R.drawable.mumule))

// set the Title and Icon

.setContent(R.id.widget_layout_green));

// set the layout

myTabhost

.addTab(myTabhost.newTabSpec("Three")// make a new Tab

.setIndicator("C",

getResources().getDrawable(R.drawable.notepad))

// set the Title and Icon

.setContent(R.id.widget_layout_red));

第二种:不用继承TabActivity,在布局文件中定义TabHost即可,但是TabWidget的id必须是
@android:id/tabs,FrameLayout的id必须是@android:id/tabcontent。TabHost的id可以自定义.

xml布局:

Java代码

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/hometabs"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<TabHost android:id="@+id/tabhost"

android:layout_width="wrap_content"

android:layout_height="wrap_content">

<LinearLayout

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<TabWidget android:id="@android:id/tabs"

android:orientation="horizontal"

android:layout_width="wrap_content"

android:layout_height="wrap_content">

</TabWidget>

<FrameLayout android:id="@android:id/tabcontent"

android:layout_width="wrap_content"

android:layout_height="wrap_content">

<TextView android:id="@+id/view1"

android:layout_width="fill_parent"

android:layout_height="fill_parent"/>

<TextView android:id="@+id/view2"

android:layout_width="fill_parent"

android:layout_height="fill_parent"/>

<TextView android:id="@+id/view3"

android:layout_width="fill_parent"

android:layout_height="fill_parent"/>

</FrameLayout>

</LinearLayout>

</TabHost>

</LinearLayout>

java代码:

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.hometabs);

TabHost tabHost = (TabHost) findViewById(R.id.tabhost);

tabHost.setup();

TabWidget tabWidget = tabHost.getTabWidget();

tabHost.addTab(tabHost.newTabSpec("tab1")

.setIndicator("tab1", getResources().getDrawable(R.drawable.mumule))

.setContent(R.id.view1));

tabHost.addTab(tabHost.newTabSpec("tab3")

.setIndicator("tab3")

.setContent(R.id.view3));

tabHost.addTab(tabHost.newTabSpec("tab2")

.setIndicator("tab2")

.setContent(R.id.view2));

final int tabs = tabWidget.getChildCount();

Log.i(TAG, "***tabWidget.getChildCount() : " + tabs);

final int tabWidth = 90;

final int tabHeight = 45;

for (int i = 0; i < tabs; i++) {

/* final View view = tabWidget.getChildAt(i);

view.getLayoutParams().width = tabWidth;

view.getLayoutParams().height = tabHeight;

final TextView tv = (TextView) view.findViewById(android.R.id.title);

tv.setTextColor(this.getResources().getColorStateList(android.R.color.black));

MarginLayoutParams tvMLP = (MarginLayoutParams)tv.getLayoutParams();

tvMLP.bottomMargin = 8;*/

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: