Android TabHost 实现Tab切换
Posted 西红柿里没有番茄
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,最好是快捷键联想生成,不要手写,这样不容易出错
XML布局文件:
1 <TabHost xmlns:android="http://schemas.android.com/apk/res/android" 2 android:layout_width="match_parent" 3 android:layout_height="match_parent" 4 android:id="@android:id/tabhost" 5 > 6 7 <LinearLayout 8 android:layout_width="match_parent" 9 android:layout_height="match_parent" 10 android:orientation="vertical" 11 > 12 13 14 15 <FrameLayout 16 android:layout_width="match_parent" 17 android:layout_height="0dp" 18 android:layout_weight="1" 19 android:id="@android:id/tabcontent" 20 > 21 <LinearLayout 22 android:layout_width="match_parent" 23 android:layout_height="match_parent" 24 android:id="@+id/widget_layout_red" 25 android:background="#ff0000" 26 android:orientation="vertical" 27 ></LinearLayout> 28 29 <LinearLayout 30 android:layout_width="match_parent" 31 android:layout_height="match_parent" 32 android:id="@+id/widget_layout_yellow" 33 android:background="#FCD209" 34 android:orientation="vertical" 35 ></LinearLayout> 36 37 </FrameLayout> 38 <TabWidget 39 android:layout_width="match_parent" 40 android:layout_height="wrap_content" 41 android:id="@android:id/tabs" 42 android:background="@mipmap/ic_launcher" 43 > 44 45 </TabWidget> 46 </LinearLayout> 47 </TabHost>
Java代码实现:
1 public class MainActivity extends TabActivity { 2 private TabHost tabhost; 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7 8 //从TabActivity上面获取放置Tab的TabHost 9 tabhost = getTabHost(); 10 11 tabhost.addTab(tabhost 12 //创建新标签one 13 .newTabSpec("one") 14 //设置标签标题 15 .setIndicator("红色") 16 //设置该标签的布局内容 17 .setContent(R.id.widget_layout_red)); 18 tabhost.addTab(tabhost.newTabSpec("two").setIndicator("黄色").setContent(R.id.widget_layout_yellow)); 19 } 20 }
实现效果如下:
方法二:继承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下面的选项栏有两种状态,点击时是一种图片效果,未点击时又是一种图片效果,下面记录一下怎么自定义选项卡,这里只实现了最左边的点击效果
效果图:
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="@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="@mipmap/x1" /> <ImageView android:layout_width="200dp" android:layout_height="50dp" android:layout_marginBottom="20dp" android:src="@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" /> </android里实现一个tabhost显示怎么弄?Android典型界面设计——FragmentTabHost+Fragment实现底部tab切换
Android零基础入门第70节:ViewPager轻松完成TabHost效果
Android 微信 底部tab 切换时是新的activity 还是 fragment
android中的tabHost怎样在点击一个选项卡后跳转到一个activity,点击另一个选项卡跳转到另一个activity?