首页 > 代码库 > 自定义TabHost,TabWidget样式

自定义TabHost,TabWidget样式

先看效果:

        京东商城底部菜单栏

 

         新浪微博底部菜单栏

 

本次学习效果图:

  

第一,主布局文件(启动页main.xml,位于res/layout目录下)代码

 1 <?xml version="1.0" encoding="utf-8"?> 2 <TabHost xmlns:android="http://schemas.android.com/apk/res/android" 3     android:layout_width="fill_parent" 4     android:layout_height="fill_parent" 5     android:id="@+id/tabhost"> 6      7     <LinearLayout  8         android:id="@+id/linear1" 9         android:layout_width="fill_parent"10         android:layout_height="fill_parent"11         android:orientation="vertical">12         <TabWidget 13             android:id="@android:id/tabs"14             android:layout_width="fill_parent"15             android:layout_height="wrap_content"></TabWidget>16         <FrameLayout 17             android:id="@android:id/tabcontent"18             android:layout_width="fill_parent"19             android:layout_height="fill_parent">20             <LinearLayout21                 android:id="@+id/tab1"22                 android:layout_width="fill_parent"23                 android:layout_height="fill_parent"24                 android:orientation="vertical">25                 <TextView 26                     android:id="@+id/tab1_txt"27                     android:layout_width="fill_parent"28                     android:layout_height="fill_parent"29                     android:gravity="center"30                     android:text="你"/>31             </LinearLayout>32             <LinearLayout33                 android:id="@+id/tab2"34                 android:layout_width="fill_parent"35                 android:layout_height="fill_parent"36                 android:orientation="vertical">37                 <TextView 38                     android:id="@+id/tab2_txt"39                     android:layout_width="fill_parent"40                     android:layout_height="fill_parent"41                     android:gravity="center"42                     android:text="我"/>43             </LinearLayout>44             <LinearLayout45                 android:id="@+id/tab3"46                 android:layout_width="fill_parent"47                 android:layout_height="fill_parent"48                 android:orientation="vertical">49                 <TextView 50                     android:id="@+id/tab3_txt"51                     android:layout_width="fill_parent"52                     android:layout_height="fill_parent"53                     android:gravity="center"54                     android:text="他"/>55             </LinearLayout>56             <LinearLayout57                 android:id="@+id/tab4"58                 android:layout_width="fill_parent"59                 android:layout_height="fill_parent"60                 android:orientation="vertical">61                 <TextView 62                     android:id="@+id/tab4_txt"63                     android:layout_width="fill_parent"64                     android:layout_height="fill_parent"65                     android:gravity="center"66                     android:text="我们"/>67             </LinearLayout>68         </FrameLayout>69     </LinearLayout>70 </TabHost>

第二,创建显示此TabWidget的布局tabmini.xml(位于res/layout目录下)

 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3     android:layout_width="fill_parent" 4     android:layout_height="wrap_content" 5     android:paddingTop="5dp" 6     android:paddingLeft="5dp" 7     android:paddingRight="5dp" 8     android:background="#8C8E8C" > 9     10     <TextView 11         android:id="@+id/tab_label"12         android:layout_width="fill_parent"13         android:layout_height="wrap_content"14         android:layout_centerInParent="true"15         android:gravity="center"16         android:textColor="#000000"17         android:textStyle="bold"18         android:background="@drawable/tabmini"/>19 </RelativeLayout>

第三,在drawable里面创建一个selector,命名tabmini.xml,用来点击TabHost的一个tab时TextView的变化

1 <?xml version="1.0" encoding="utf-8"?>2 <selector xmlns:android="http://schemas.android.com/apk/res/android" >3     <item 4         android:state_selected="true"5         android:drawable="@drawable/add_managebg_down2"/>  6     <item 7         android:state_selected="false"  8         android:drawable="@drawable/add_managebg2"/>9 </selector>

第四,java代码,在Activity里实现TabHost

 1 package com.example.androidtest_9_5_4_meihuatubiao; 2  3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.LayoutInflater; 6 import android.view.View; 7 import android.widget.TabHost; 8 import android.widget.TextView; 9 10 public class Main extends Activity {11     @Override12     protected void onCreate(Bundle savedInstanceState){13         super.onCreate(savedInstanceState);14         setContentView(R.layout.main);15         16         View niTab=(View)LayoutInflater.from(this).inflate(R.layout.tabmini, null);17         TextView niTxt=(TextView)niTab.findViewById(R.id.tab_label);18         niTxt.setText("ni");19         20         View woTab=(View)LayoutInflater.from(this).inflate(R.layout.tabmini, null);21         TextView woTxt=(TextView)woTab.findViewById(R.id.tab_label);22         woTxt.setText("wo");23         24         View taTab=(View)LayoutInflater.from(this).inflate(R.layout.tabmini, null);25         TextView taTxt=(TextView)taTab.findViewById(R.id.tab_label);26         taTxt.setText("ta");27         28         View weTab=(View)LayoutInflater.from(this).inflate(R.layout.tabmini, null);29         TextView weTxt=(TextView)weTab.findViewById(R.id.tab_label);30         weTxt.setText("we");31         32         TabHost tabs=(TabHost)findViewById(R.id.tabhost);33         tabs.setup();34         35         tabs.addTab(tabs.newTabSpec("niTab").setContent(R.id.tab1).setIndicator(niTab));36         tabs.addTab(tabs.newTabSpec("woTab").setContent(R.id.tab2).setIndicator(woTab));37         tabs.addTab(tabs.newTabSpec("taTab").setContent(R.id.tab3).setIndicator(taTab));38         tabs.addTab(tabs.newTabSpec("weTab").setContent(R.id.tab4).setIndicator(weTab));39     }40 }