从零開始学android<TabHost标签组件.二十九.>
2016-02-19 17:51
579 查看
TabHost主要特点是能够在一个窗体中显示多组标签栏的内容,在Android系统之中每一个标签栏就称为一个Tab。而包括这多个标签栏的容器就将其称为TabHost。TabHost类的继承结构例如以下所看到的:
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.FrameLayout
↳ android.widget.TabHost
经常用法例如以下所看到的
两种方式实现TabHost
方式一:直接让一个Activity程序继承TabActivity类。
方式二:利用findViewById()方法取得TagHost组件。并进行若干配置。
第一种方式让一个类继承tabActivity
XMl文件 配置须要在一个xml文件里嵌套使用布局 来达到不同Tab中显示不同的内容
JAVA文件设置
效果图例如以下
![](http://img.blog.csdn.net/20140824122151927)
![](http://img.blog.csdn.net/20140824122203814)
使用配置文件设置。
这样的方法较为常见,能够讲TabHost置于底部
可是布局文件较为复杂,大家能够參照样例进行详细的学习
XML文件
JAVA文件配置
![](http://img.blog.csdn.net/20140824122610685)
![](http://img.blog.csdn.net/20140824122620357)
使用TabHost组件设置Tab切换与intent的结合在开发中较经常使用到,是app开发框架的基础
下节预报:
Menu菜单
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.FrameLayout
↳ android.widget.TabHost
经常用法例如以下所看到的
1 | public TabHost(Context context) | 构造 | 创建TabHost类对象 |
2 | public void addTab(TabHost.TabSpec tabSpec) | 普通 | 添加一个Tab |
3 | public TabHost.TabSpec newTabSpec(String tag) | 普通 | 创建一个TabHost.TabSpec对象 |
4 | public View getCurrentView() | 普通 | 取得当前的View对象 |
5 | public void setup() | 普通 | 建立TabHost对象 |
6 | public void setCurrentTab(int index) | 普通 | 设置当前显示的Tab编号 |
7 | public void setCurrentTabByTag(String tag) | 普通 | 设置当前显示的Tab名称 |
8 | public FrameLayout getTabContentView() | 普通 | 返回标签容器 |
9 | public void setOnTabChangedListener (TabHost.OnTabChangeListener l) | 普通 | 设置标签改变时触发 |
方式一:直接让一个Activity程序继承TabActivity类。
方式二:利用findViewById()方法取得TagHost组件。并进行若干配置。
第一种方式让一个类继承tabActivity
XMl文件 配置须要在一个xml文件里嵌套使用布局 来达到不同Tab中显示不同的内容
<? xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_marginTop="50dp" android:id="@+id/login" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TableRow android:id="@+id/tableRow1" android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="账号" /> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:textSize="25sp" /> </TableRow> <TableRow android:id="@+id/tableRow2" android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="password" /> <EditText android:id="@+id/editText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:textSize="25sp" /> </TableRow> <TableRow android:id="@+id/tableRow3" android:layout_width="match_parent" android:layout_height="wrap_content" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="取消" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="登录" /> </TableRow> </LinearLayout> <LinearLayout android:layout_marginTop="50dp" android:id="@+id/image" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/a2" /> </LinearLayout> <LinearLayout android:layout_marginTop="50dp" android:id="@+id/timer" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TimePicker android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:layout_marginTop="50dp" android:id="@+id/timer1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TimePicker android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:layout_marginTop="50dp" android:id="@+id/timer2" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TimePicker android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout>
JAVA文件设置
package com.example.tabhost; import android.app.TabActivity; import android.os.Bundle; import android.view.LayoutInflater; import android.widget.TabHost; import android.widget.TabHost.TabSpec; public class MainActivity extends TabActivity { private TabHost tabHost;//初始化TabHost组件 private int reslayout[] = { R.id.login, R.id.image, R.id.timer , R.id.timer1,R.id.timer2};//设置相应的额xml文件 private int images[]={R.drawable.cart,R.drawable.cloud,R.drawable.comment,R.drawable.gear,R.drawable.joystick};//设置显示的标题文件 @SuppressWarnings("deprecation") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.tabHost = super.getTabHost();//实例化TabHost组件 // 取得LayoutInflater对象 LayoutInflater.from(this).inflate(R.layout.linearlayout,//制定布局 this.tabHost.getTabContentView(),//制定标签添加的容器 true); for (int i = 0; i < reslayout.length; i++) { TabSpec myTab = tabHost.newTabSpec("tab" + i);// 定义TabSpec myTab.setIndicator(null,getResources().getDrawable(images[i])) ; // 设置标签 myTab.setContent(this.reslayout[i]) ; // 设置显示的组件 this.tabHost.addTab(myTab) ; } } }
效果图例如以下
使用配置文件设置。
这样的方法较为常见,能够讲TabHost置于底部
可是布局文件较为复杂,大家能够參照样例进行详细的学习
XML文件
<?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tabhost" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <RelativeLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" /> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:id="@+id/login" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TableRow android:id="@+id/tableRow1" android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="账号" /> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:textSize="25sp" /> </TableRow> <TableRow android:id="@+id/tableRow2" android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="password" /> <EditText android:id="@+id/editText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:textSize="25sp" /> </TableRow> <TableRow android:id="@+id/tableRow3" android:layout_width="match_parent" android:layout_height="wrap_content" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="取消" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="登录" /> </TableRow> </LinearLayout> <LinearLayout android:id="@+id/image" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/a2" /> </LinearLayout> <LinearLayout android:id="@+id/timer" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TimePicker android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:id="@+id/timer1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TimePicker android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:id="@+id/timer2" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TimePicker android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> </FrameLayout> </RelativeLayout > </TabHost>
JAVA文件配置
package com.example.tabhost; import android.os.Bundle; import android.app.Activity; import android.widget.TabHost; import android.widget.TabHost.TabSpec; public class MainActivity extends Activity { // 直接继承Activity private TabHost myTabHost; // 定义TabHost private int[] layRes = { R.id.login, R.id.image , R.id.timer, R.id.timer1, R.id.timer2 }; // 定义内嵌布局管理器ID private int images[]={R.drawable.cart,R.drawable.cloud,R.drawable.comment,R.drawable.gear,R.drawable.joystick};//标题图片数据 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_main) ; // 调用默认布局管理器 this.myTabHost = (TabHost) super.findViewById(R.id.tabhost); // 取得TabHost对象 this.myTabHost.setup() ; // 建立TabHost对象 for (int x = 0; x < this.layRes.length; x++) { // 循环取出全部布局标记 TabSpec myTab = myTabHost.newTabSpec("tab" + x); // 定义TabSpec myTab.setIndicator(null,getResources().getDrawable(images[x])) ; // 设置标签文字 myTab.setContent(this.layRes[x]) ; // 设置显示的组件 this.myTabHost.addTab(myTab) ; // 添加标签 } this.myTabHost.setCurrentTab(0) ; // 设置開始索引 } }
使用TabHost组件设置Tab切换与intent的结合在开发中较经常使用到,是app开发框架的基础
下节预报:
Menu菜单
相关文章推荐
- Android Studio Gradle多渠道打包
- Android利用方向传感器获得手机的相对角度实例说明
- 一步一步学ROP之Android ARM 32位篇
- ANDROID_MARS学习笔记_S02_011_ANIMATION_LayoutAnimationController
- android中图片,文字拖动效果
- 改变屏幕后,Activity、Fragment的生命周期变化
- android Animation 动画效果收集
- android屏幕适配建议 (二)
- Android Volley完全解析(四),带你从源码的角度理解Volley
- 阅读《Android 从入门到精通》(27)——选项菜单
- Android 图片压缩实现过程代码
- Android多activity间数据的传送
- Android Studio 哪些文件不需要加入版本控制中
- Android ListView局部刷新
- Android推送
- Android右菜单回弹效果(最简)
- android 成长日记 2.Activity的生命周期
- Android基础类之BaseAdapter
- Android DeskClock源码分析之旅---AndroidManifest.xml文件
- Android提示版本更新