Android TabHost 实现Tab切换

要须心地收汗马,孔孟行世目杲杲。这篇文章主要讲述Android TabHost 实现Tab切换相关的知识,希望能为你提供帮助。
TabHost是整个Tab的容器,包含TabWidget和FrameLayout两个部分,TabWidget是每个Tab的表情(图标效果),FrameLayout是Tab内容实现方式有两种:
1、继承TabActivity
2、继承Activity类
 
方法一:继承TabActivity
从TabActivity中用getTabHost()方法获取TabHost,然后设置标签内容
布局:
1、TabHost必须设置android:id为@android:id/tabhost
2、TabWidget必须设置android:id为@android:id/tabs
3、FrameLayout  必须设置android:id为@android:id/tabcontent
这几个都是系统自带id,最好是快捷键联想生成,不要手写,这样不容易出错
 
【Android TabHost 实现Tab切换】XML布局文件:

1 < TabHost xmlns:android="http://schemas.android.com/apk/res/android" 2android:layout_width="match_parent" 3android:layout_height="match_parent" 4android:id="@android:id/tabhost" 5> 6 7< LinearLayout 8android:layout_width="match_parent" 9android:layout_height="match_parent" 10android:orientation="vertical" 11> 12 13 14 15< FrameLayout 16android:layout_width="match_parent" 17android:layout_height="0dp" 18android:layout_weight="1" 19android:id="@android:id/tabcontent" 20> 21< LinearLayout 22android:layout_width="match_parent" 23android:layout_height="match_parent" 24android:id="@+id/widget_layout_red" 25android:background="#ff0000" 26android:orientation="vertical" 27> < /LinearLayout> 28 29< LinearLayout 30android:layout_width="match_parent" 31android:layout_height="match_parent" 32android:id="@+id/widget_layout_yellow" 33android:background="#FCD209" 34android:orientation="vertical" 35> < /LinearLayout> 36 37< /FrameLayout> 38< TabWidget 39android:layout_width="match_parent" 40android:layout_height="wrap_content" 41android:id="@android:id/tabs" 42android:background="@mipmap/ic_launcher" 43> 44 45< /TabWidget> 46< /LinearLayout> 47 < /TabHost>

 
 
java代码实现:
1 public class MainActivity extends TabActivity { 2private TabHost tabhost; 3@Override 4protected void onCreate(Bundle savedInstanceState) { 5super.onCreate(savedInstanceState); 6setContentView(R.layout.activity_main); 7 8//从TabActivity上面获取放置Tab的TabHost 9tabhost = getTabHost(); 10 11tabhost.addTab(tabhost 12//创建新标签one 13.newTabSpec("one") 14//设置标签标题 15.setIndicator("红色") 16//设置该标签的布局内容 17.setContent(R.id.widget_layout_red)); 18tabhost.addTab(tabhost.newTabSpec("two").setIndicator("黄色").setContent(R.id.widget_layout_yellow)); 19} 20 }

 
 
实现效果如下:
Android TabHost 实现Tab切换

文章图片
Android TabHost 实现Tab切换

文章图片

 
 
方法二:继承Activity类
布局:
1、TabHost可自定义id
2、TabWidget必须设置android:id为@android:id/tabs
3、FrameLayout  必须设置android:id为@android:id/tabcontent
 
XML布局:
 
< TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/zidingyi" > < LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > < FrameLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:id="@android:id/tabcontent" > < LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/widget_layout_red" android:background="#ff0000" android:orientation="vertical" > < /LinearLayout> < LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/widget_layout_yellow" android:background="#FCD209" android:orientation="vertical" > < /LinearLayout> < /FrameLayout> < TabWidget android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@android:id/tabs" android:background="@mipmap/ic_launcher" > < /TabWidget> < /LinearLayout> < /TabHost>

 
 
 
 
java代码实现:
public class MainActivity extends Activity { private TabHost tabhost; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //得到TabHost对象实例 tabhost =(TabHost) findViewById(R.id.ho); //调用 TabHost.setup() tabhost.setup(); //创建Tab标签 tabhost.addTab(tabhost.newTabSpec("one").setIndicator("红色").setContent(R.id.widget_layout_red)); tabhost.addTab(tabhost.newTabSpec("two").setIndicator("黄色").setContent(R.id.widget_layout_yellow)); }}

 
 
 
 
 
自定义选项卡
很多时候系统自带的样式并不能满足我们的使用,就像QQ下面的选项栏有两种状态,点击时是一种图片效果,未点击时又是一种图片效果,下面记录一下怎么自定义选项卡,这里只实现了最左边的点击效果
效果图:
Android TabHost 实现Tab切换

文章图片

 
 
XML布局:(浅蓝色背景的是三个不同界面的布局内容,可以忽略。绿色背景是比较重要,但是容易被忽视的属性)
< TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/Mytab" android:layout_width="match_parent" android:layout_height="match_parent"> < LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> < FrameLayout android:id="@android:id/tabcontent" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1"> < RelativeLayout android:id="@+id/one" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#f5f5f9" android:orientation="vertical"> < android.support.v7.widget.Toolbar android:id="@+id/too" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#00a2ac"> < TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="15dp" android:gravity="center" android:text="设置" android:textColor="#ffffff" /> < /android.support.v7.widget.Toolbar> < TextView android:id="@+id/text_1" android:layout_width="wrap_content" android:layout_height="1px" android:layout_below="@+id/too" android:layout_marginTop="20dp" android:background="#f3f3f3" /> < TextView android:id="@+id/text_2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/text_1" android:background="#ffffff" android:drawableRight="@mipmap/a2" android:padding="20px" android:text="服务大厅" android:textColor="#000000" /> < TextView android:id="@+id/text_3" android:layout_width="wrap_content" android:layout_height="1px" android:layout_below="@id/text_2" android:background="#f3f3f3" /> < TextView android:id="@+id/text_4" android:layout_width="wrap_content" android:layout_height="1px" android:layout_below="@id/text_3" android:layout_marginTop="20dp" android:background="#f3f3f3" /> < TextView android:id="@+id/text_5" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/text_4" android:background="#ffffff" android:drawableRight="@mipmap/a2" android:padding="20px" android:text="服务大厅" android:textColor="#000000" /> < TextView android:id="@+id/text_6" android:layout_width="wrap_content" android:layout_height="1px" android:layout_below="@id/text_5" android:background="#f3f3f3" /> < TextView android:id="@+id/text_7" android:layout_width="wrap_content" android:layout_height="1px" android:layout_below="@+id/text_6" android:layout_marginTop="20dp" android:background="#f3f3f3" /> < TextView android:id="@+id/text_8" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/text_7" android:background="#ffffff" android:drawableRight="@mipmap/a2" android:padding="20px" android:text="服务大厅" android:textColor="#000000" /> < TextView android:id="@+id/text_9" android:layout_width="wrap_content" android:layout_height="1px" android:layout_below="@id/text_8" android:background="#f3f3f3" /> < TextView android:id="@+id/text_10" android:layout_width="wrap_content" android:layout_height="1px" android:layout_below="@+id/text_9" android:layout_marginTop="20dp" android:background="#f3f3f3" /> < TextView android:id="@+id/text_11" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/text_10" android:background="#ffffff" android:drawableRight="@mipmap/a2" android:padding="20px" android:text="服务大厅" android:textColor="#000000" /> < TextView android:id="@+id/text_12" android:layout_width="wrap_content" android:layout_height="1px" android:layout_below="@id/text_11" android:background="#f3f3f3" /> < TextView android:id="@+id/text_13" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/text_12" android:background="#ffffff" android:drawableRight="@mipmap/a2" android:padding="20px" android:text="服务大厅" android:textColor="#000000" /> < TextView android:id="@+id/text_14" android:layout_width="wrap_content" android:layout_height="1px" android:layout_below="@id/text_13" android:background="#f3f3f3" /> < TextView android:id="@+id/text_15" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/text_14" android:background="#ffffff" android:drawableRight="@mipmap/a2" android:padding="20px" android:text="服务大厅" android:textColor="#000000" /> < TextView android:id="@+id/text_16" android:layout_width="wrap_content" android:layout_height="1px" android:layout_below="@id/text_15" android:background="#f3f3f3" /> < TextView android:id="@+id/text_17" android:layout_width="wrap_content" android:layout_height="1px" android:layout_below="@+id/text_16" android:layout_marginTop="20dp" android:background="#f3f3f3" /> < TextView android:id="@+id/text_18" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/text_17" android:background="#ffffff" android:drawableRight="@mipmap/a2" android:padding="20px" android:text="服务大厅" android:textColor="#000000" /> < TextView android:id="@+id/text_19" android:layout_width="wrap_content" android:layout_height="1px" android:layout_below="@id/text_18" android:background="#f3f3f3" /> < TextView android:id="@+id/text_20" android:layout_width="wrap_content" android:layout_height="1px" android:layout_below="@+id/text_19" android:layout_marginTop="20dp" android:background="#f3f3f3" /> < TextView android:id="@+id/text_21" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/text_20" android:background="#ffffff" android:drawableRight="@mipmap/a2" android:padding="20px" android:text="服务大厅" android:textColor="#000000" /> < TextView android:id="@+id/text_22" android:layout_width="wrap_content" android:layout_height="1px" android:layout_below="@id/text_21" android:background="#f3f3f3" /> < TextView android:id="@+id/text_23" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/text_22" android:background="#ffffff" android:drawableRight="@mipmap/a2" android:padding="20px" android:text="服务大厅" android:textColor="#000000" /> < TextView android:id="@+id/text_24" android:layout_width="wrap_content" android:layout_height="1px" android:layout_below="@id/text_23" android:background="#f3f3f3" /> < /RelativeLayout> < RelativeLayout android:id="@+id/two" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/a3" android:orientation="vertical"> < /RelativeLayout> < ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/three" android:layout_width="match_parent" android:layout_height="match_parent"> < LinearLayout android:layout_width="match_parent"android:layout_height="match_parent" android:background="#FFFFFF" android:gravity="center" android:orientation="vertical"> < LinearLayout android:layout_width="match_parent" android:layout_height="60dp" android:background="#00A2AC" android:gravity="center_vertical" android:orientation="horizontal"> < TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="15dp" android:text="其他登录方式" android:textColor="#FFFFFF" /> < TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" /> < ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="https://www.songbingjia.com/android/@mipmap/x" /> < /LinearLayout> < LinearLayout android:layout_width="match_parent" android:layout_height="170dp" android:background="#00A2AC" android:gravity="center" android:orientation="vertical"> < ImageView android:layout_width="200dp" android:layout_height="100dp" android:src="https://www.songbingjia.com/android/@mipmap/x1" /> < ImageView android:layout_width="200dp" android:layout_height="50dp" android:layout_marginBottom="20dp" android:src="https://www.songbingjia.com/android/@mipmap/x2" /> < /LinearLayout> < LinearLayout android:layout_width="match_parent" android:layout_height="150dp" android:background="#FFFFFF" android:gravity="center_vertical" android:orientation="vertical"> < TextView android:layout_width="wrap_content"android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:text="贷款,其实是一件小事" android:textSize="22sp" /> < TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginTop="15dp" android:text="为微小型企业,经营者提供便捷的贷款服务" android:textColor="#CDCDCD" /> < /

    推荐阅读