歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android 分頁控件制成底部菜單

其實Android 中的底部菜單, 可以用分頁控件很好的實現。  我們先將自定義分頁控件做好, 就可以做到頂底兩個位置的菜單了。

TabHost只是作為一個容器來存放一些Activity, 所以需要自己另外創建幾個新的Activity, 然後由主TabHost加載。

 

tab_style.xml 

是每個Tab的自定義樣式

  1. //分頁控件樣式 
  2. <?xml version="1.0" encoding="UTF-8"?> 
  3. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  4.     android:layout_width="wrap_content" 
  5.     android:layout_height="wrap_content" 
  6.     android:paddingLeft="5dip" 
  7.     android:paddingRight="5dip" 
  8.     android:paddingTop="5dip" 
  9.     android:background="@drawable/tab_bg" 
  10.     > 
  11.      
  12.     <FrameLayout   
  13.         android:layout_width="fill_parent" 
  14.         android:layout_height="fill_parent" 
  15.         android:layout_weight="0.6" 
  16.         > 
  17.         <TextView   
  18.             android:id="@+id/tab_label" 
  19.             android:layout_width="fill_parent" 
  20.             android:layout_height="fill_parent" 
  21.             android:gravity="center" 
  22.             android:background="@drawable/tab_title_selector" 
  23.             android:textColor="#FFFFFF" 
  24.             android:text 
  25.         /> 
  26.     </FrameLayout>     
  27. </LinearLayout> 

main_tab.xml  是主TabHost布局文件

  1. //TabHost布局 
  2. <?xml version="1.0" encoding="UTF-8"?> 
  3. <TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
  4.     android:id="@android:id/tabhost"   
  5.     android:layout_width="fill_parent" 
  6.     android:layout_height="fill_parent" 
  7.     > 
  8.      
  9.     //必須包含下列三個View 
  10.     <LinearLayout 
  11.         android:orientation="vertical" 
  12.         android:layout_width="fill_parent" 
  13.         android:layout_height="fill_parent" 
  14.         > 
  15.  
  16. <FrameLayout   
  17.             android:gravity="center"   
  18.             android:id="@android:id/tabcontent" 
  19.             android:layout_width="fill_parent" 
  20.             android:layout_height="wrap_content" 
  21.             android:layout_weight="1.0" 
  22.         /> 
  23.          
  24.         //TabWidget位置在FrameLayout之下則顯示在低部, 在之上則顯示在頂部 
  25.         <TabWidget   
  26.             android:id="@android:id/tabs" 
  27.             android:layout_height="wrap_content" 
  28.             android:layout_width="fill_parent" 
  29.             android:layout_weight="0.0" 
  30.             /> 
  31.          
  32.     </LinearLayout>     
  33.      
  34. </TabHost> 

 

tab_title_selector.xml

是Tab中TextView的按下背景

  1. //選擇器,指示Text按下後的背景 
  2. <?xml version="1.0" encoding="UTF-8"?> 
  3. <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
  4.     <item 
  5.         android:state_focused="true" 
  6.         android:drawable="@drawable/tab_btn_bg_d" 
  7.         /> 
  8.     <item 
  9.         android:state_selected="true" 
  10.         android:drawable="@drawable/tab_btn_bg_d" 
  11.         /> 
  12.     <item 
  13.         android:state_pressed="true" 
  14.         android:drawable="@drawable/tab_btn_bg_d" 
  15.         /> 
  16. </selector> 

Activity類

另外還需要幾個Activity類, 普通的Activity類即可, 在此不顯示。

  1. public class TabTest extends TabActivity 
  2.     private TabWidget mTabWidget; 
  3.     private TabHost mTabHost; 
  4.     /** Called when the activity is first created. */ 
  5.     @Override 
  6.     public void onCreate(Bundle savedInstanceState) 
  7.     { 
  8.         super.onCreate(savedInstanceState); 
  9.         setContentView(R.layout.main_tabs); 
  10.          
  11.         mTabHost = getTabHost(); 
  12.          
  13.         //將要顯示的Activity載入TabHost控件  
  14.         //要顯示的Activity由自己自由創建  
  15.         setTabIndicator("one", 1, new Intent(this, OneActivity.class)); 
  16.         setTabIndicator("Two", 2, new Intent(this, TwoActivity.class)); 
  17.         setTabIndicator("Three", 3, new Intent(this, OneActivity.class)); 
  18.         setTabIndicator("Four", 4, new Intent(this, TwoActivity.class)); 
  19.     } 
  20.      
  21.     private void setTabIndicator(String title, int nId, Intent intent) 
  22.     { 
  23.         //使用指定Tab樣式  
  24.         View view = LayoutInflater.from(this.mTabHost.getContext()) 
  25.                     .inflate(R.layout.tab_style, null); 
  26.          
  27.         TextView text   = (TextView)view.findViewById(R.id.tab_label); 
  28.         String strId    = String.valueOf(nId); 
  29.          
  30.         text.setText(title); 
  31.          
  32.         //創建一個新Tab  
  33.         TabHost.TabSpec localTabSpec = mTabHost.newTabSpec(strId) 
  34.                         .setIndicator(view).setContent(intent); 
  35.         //加載新Tab  
  36.         mTabHost.addTab(localTabSpec); 
  37.     } 

Android 分頁控件制成底部菜單源碼下載地址:

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /pub/Android源碼集錦/2011年/12月/Android 分頁控件制成底部菜單/

Copyright © Linux教程網 All Rights Reserved