一个简单的TabHost布局
1.首先继承TabActivity
2.通过TabActivity的getTabHost()方法得到一个TabHost对象
3.定义选项卡的内容(是一个FrameLayout的对象),并与TabHost绑定起来
可以通过一下语句绑定TabHost容器的内容
LayoutInflater.from(this).inflate(R.layout.main, tabHost.getTabContentView(), true);
4.添加选项卡及设置选项的标题及内容
我们知道添加选项卡需要指定一个TabSpec对象,通过TabHost的newTabSpec(选项卡的标识)可以得到,并且可以设定选项卡的标题(可以设置图片),并且设置选项卡内容,如
  tabHost.addTab(tabHost.newTabSpec("tab01")
  .setIndicator("标签1",getResources().getDrawable(R.drawable.icon))
  .setContent(R.id.tab01));

初学者注意了:
如果在 继承了TabActivity的类中设置了,setContentView(R.layout.main),则有可能导致错误,原因可能是因为main布局文件设置不正确(下面有详解),解决办法是建议先删除此行


上面的例子中TabHost只是与一个布局容器绑定,也就是说各个选项卡的内容是写在一个布局文件中的,然后通过不同的id来区分各个选项卡的内容.
如果选项卡的个数过多,或者每个选项卡的布局比较复杂的话,势必会使布局容器显得臃肿而且可读性比较差,不利于后期的维护。
Android中提供了我们还可以通过setContent(Intent intent)来指定每个选项卡的内容
源码: <IGNORE_JS_OP>(53.09 KB, 下载次数: 1)

2011-11-5 14:15:12 上传
下载次数: 1
下载积分: e币 -1 元
 


如果想要让选项卡栏在下方,那么只需要交换TabWidget和FrameLayout的位置即可,如
<?xml version="1.0" encoding="utf-8"?>
<TabHost
  xmlns:andro语句
这个属性代表的是比重,android中所有的组件默认这个属性都是为0,意味着他们只在屏幕上显示他们需要空间的大小。
如果设置了该属性,activity将根据设置的值按比例来划分空间的大小

举个例子,如果acitivity中有三个组件,假设屏幕高为90cm,三个组件如果设置了该属性为0的话,那么他们会以正常的方式显示在屏幕上。
如果第一个组件设置组件设置为0,其余两个组件设置为1,那么这个屏幕将会以0:1:1的方式来显示,如果第一个组件默认占10cm,那么其他两个组件各占40cm

 

另一个例子源码:

TabHost的实现有两种方式,第一种继承TabActivity,从TabActivity中用getTabHost()方法获取TabHost。各个Tab中的内容在布局文件中定义就行了。

mainActivity.xml

 1 private TabHost myTabHost;
 2 
 3     @Override
 4     public void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         //setContentView(R.layout.main);
 7        myTabHost = this.getTabHost();
 8         LayoutInflater.from(this).inflate(R.layout.main,
 9                 myTabHost.getTabContentView(), true);
10         myTabHost.addTab(myTabHost
11                 .newTabSpec("选项卡1")
12                 .setIndicator("选项卡1",
13                         getResources().getDrawable(R.drawable.img01))
14                 .setContent(R.id.ll01));
15         myTabHost.addTab(myTabHost
16                 .newTabSpec("选项卡2")
17                 .setIndicator("选项卡2",
18                         getResources().getDrawable(R.drawable.img02))
19                 .setContent(R.id.ll01));
20         myTabHost.addTab(myTabHost
21                 .newTabSpec("选项卡3")
22                 .setIndicator("选项卡3",
23                         getResources().getDrawable(R.drawable.img03))
24                 .setContent(R.id.ll03));
25 
26     }

Tab内容布局文件:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <FrameLayout xmlns:andro
 3     android:orientation="vertical" android:layout_width="fill_parent"
 4     android:layout_height="fill_parent">
 5     <LinearLayout android:
 6         android:layout_height="fill_parent" android:gravity="center_horizontal"
 7         android:orientation="vertical">
 8         <EditText android:
 9             android:layout_height="wrap_content" android:text="EditText"
10             android:textSize="18sp">
11         </EditText>
12         <Button android:
13             android:layout_height="wrap_content" android:text="Button">
14         </Button>
15 
16     </LinearLayout>
17     <LinearLayout android:
18         android:layout_height="fill_parent" android:gravity="center_horizontal"
19         android:orientation="vertical">
20         <AnalogClock android:
21             android:layout_width="wrap_content" android:layout_height="wrap_content">
22         </AnalogClock>
23     </LinearLayout>
24     <LinearLayout android:
25         android:layout_height="fill_parent" android:gravity="center_horizontal"
26         android:orientation="vertical">
27         <RadioGroup android:
28             android:layout_width="166px" android:layout_height="98px"
29             android:orientation="vertical">
30             <RadioButton android:
31                 android:layout_width="wrap_content" android:layout_height="wrap_content"
32                 android:text="RadioButton">
33             </RadioButton>
34             <RadioButton android:
35                 android:layout_width="wrap_content" android:layout_height="wrap_content"
36                 android:text="RadioButton">
37             </RadioButton>
38         </RadioGroup>
39 
40     </LinearLayout>
41 </FrameLayout>

 

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

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:andro  
 3     android:
 4     android:orientation="vertical"
 5     android:layout_width="fill_parent"  
 6     android:layout_height="fill_parent"> 
 7     <TabHost android:
 8          android:layout_width="fill_parent"
 9          android:layout_height="wrap_content">
10          <LinearLayout
11             android:orientation="vertical"
12             android:layout_width="fill_parent"
13             android:layout_height="fill_parent">
14             
15              <TabWidget android: 
16               android:orientation="horizontal"
17               android:layout_width="fill_parent"
18               android:layout_height="wrap_content">
19             </TabWidget>
20          
21              <FrameLayout android:
22                   android:layout_width="wrap_content"
23                   android:layout_height="wrap_content">
24                       <TextView android:
25                         android:layout_width="fill_parent"
26                         android:layout_height="fill_parent" android:text="Tab1"/>
27                     <TextView android:
28                         android:layout_width="fill_parent"
29                         android:layout_height="fill_parent" android:text="Tab2"/>
30                     <TextView android:
31                         android:layout_width="fill_parent"
32                         android:layout_height="fill_parent" android:text="Tab3"/>
33              </FrameLayout>
34          
35          </LinearLayout>
36     </TabHost>
37 </LinearLayout>

mainActivity

 1 @Override
 2     protected void onCreate(Bundle savedInstanceState) {
 3         super.onCreate(savedInstanceState);
 4         setContentView(R.layout.main);
 5 
 6         TabHost tabHost = (TabHost) findViewById(R.id.tabhost);
 7         tabHost.setup();
 8         TabWidget tabWidget = tabHost.getTabWidget();
 9 
10         tabHost.addTab(tabHost
11                 .newTabSpec("tab1")
12                 .setIndicator("tab1",
13                         getResources().getDrawable(R.drawable.img01))
14                 .setContent(R.id.view1));
15 
16         tabHost.addTab(tabHost
17                 .newTabSpec("tab2")
18                 .setIndicator("tab2",
19                         getResources().getDrawable(R.drawable.img02))
20                 .setContent(R.id.view2));
21 
22         tabHost.addTab(tabHost
23                 .newTabSpec("tab3")
24                 .setIndicator("tab3",
25                         getResources().getDrawable(R.drawable.img03))
26                 .setContent(R.id.view3));

 

 

相关文章: