歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android之使用Tabhost設計底部標簽欄

Android之使用Tabhost設計底部標簽欄

日期:2017/3/1 10:41:47   编辑:Linux編程

iPhone中標簽欄在底部的這種風格,現在網上都很流行,那麼在Android中該怎麼實現呢?網上看到幾篇文章,其中農民伯伯的一篇比較有參考價值,但方法不是太簡便。因為公司的項目也使用到這個技術,我研究後發現寫的也過於復雜,後來我就自己琢磨寫了一個Demo出來,這個是我看到的網上的最簡單的方式,下面直接貼代碼了。

1.主Activity

  1. package com.zhf.TabHostDemo;
  2. import android.app.ActivityGroup;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.LayoutInflater;
  6. import android.widget.ImageView;
  7. import android.widget.LinearLayout;
  8. import android.widget.TabHost;
  9. import android.widget.TabWidget;
  10. import android.widget.TextView;
  11. import android.widget.TabHost.TabSpec;
  12. public class TabHostDemoActivity extends ActivityGroup {
  13. private TabHost tabHost;
  14. @Override
  15. public void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.main);
  18. //加載底部Tab布局
  19. LinearLayout tab1=(LinearLayout)LayoutInflater.from(this).inflate(R.layout.action_item, null);
  20. ImageView icon1=(ImageView)tab1.findViewById(R.id.icon);
  21. icon1.setBackgroundResource(R.drawable.icon1);
  22. TextView title1=(TextView)tab1.findViewById(R.id.title);
  23. title1.setText("Activity1");
  24. LinearLayout tab2=(LinearLayout)LayoutInflater.from(this).inflate(R.layout.action_item, null);
  25. ImageView icon2=(ImageView)tab2.findViewById(R.id.icon);
  26. icon2.setBackgroundResource(R.drawable.icon2);
  27. TextView title2=(TextView)tab2.findViewById(R.id.title);
  28. title2.setText("Activity2");
  29. // 加載TabSpec
  30. tabHost = (TabHost) findViewById(R.id.view_tab_host);
  31. tabHost.setup(getLocalActivityManager());
  32. TabSpec ts1 = tabHost.newTabSpec("Activity1");
  33. ts1.setIndicator(tab1);//這句話就是設置每個小tab顯示的內容
  34. //第一個Activity
  35. ts1.setContent(new Intent(this, Activity1.class));
  36. tabHost.addTab(ts1);
  37. TabSpec ts2 = tabHost.newTabSpec("Activity2");
  38. ts2.setIndicator(tab2);
  39. //第二個Activity
  40. ts2.setContent(new Intent(this, Activity2.class));
  41. tabHost.addTab(ts2);
  42. //設置標簽欄背景圖片
  43. TabWidget tw = tabHost.getTabWidget();
  44. tw.setBackgroundResource(R.drawable.home_tab_bg);
  45. }
  46. }

2.主布局文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical" >
  6. <TabHost
  7. android:id="@+id/view_tab_host"
  8. android:layout_width="fill_parent"
  9. android:layout_height="fill_parent" >
  10. <LinearLayout
  11. android:layout_width="fill_parent"
  12. android:layout_height="fill_parent"
  13. android:gravity="center"
  14. android:orientation="vertical" >
  15. <FrameLayout
  16. android:id="@android:id/tabcontent"
  17. android:layout_width="fill_parent"
  18. android:layout_height="wrap_content"
  19. android:layout_gravity="center_vertical"
  20. android:layout_weight="1"
  21. android:gravity="center_vertical" >
  22. </FrameLayout>
  23. <TabWidget
  24. android:id="@android:id/tabs"
  25. android:layout_width="fill_parent"
  26. android:layout_height="52dip"
  27. android:layout_weight="0">
  28. </TabWidget>
  29. </LinearLayout>
  30. </TabHost>
  31. </LinearLayout>

Copyright © Linux教程網 All Rights Reserved