tabhost用两种方法

方法一:Activity继承TabActivity后用getTabHost()方法来获取tabhost(前提:Activity的setContentView要删除,这样布局才能用TabActivity的默认布局,这样TabActivity的setup方法才不会出错),获取完后再对tabhost布局进行设置

方法二:用findViewById方法来获取tabhost,只是findViewById里的布局xml要符合一以下的格式

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
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" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"> </FrameLayout>
</LinearLayout>
</TabHost>

然后调用tabhost.setup()方法,再调用addTab()方法

代码如下:

MyTabActivity

package com.my.studyofandroid;

import android.os.Bundle;
import android.app.Activity;
import android.text.AndroidCharacter;
import android.view.LayoutInflater;
import android.view.Menu;
import android.widget.TabHost;
///tabhost方法一:继承TabActivity类,用getTabHost()方法来建tabhost。这时setContentView()要去掉,不限制xml布局文件里是否要有Tabhost,TabWidget,FrameLayout等 内容并且格式要固定
@SuppressWarnings("deprecation")
public class MyTabActivity extends android.app.TabActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
///tabhost方法一
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_mytab);///这句话要删除不然会报错:Your TabHost must have a TabWidget whose id attribute is 'android.R.id.tabs
///用TabActivity的方法获取tabhost对象
TabHost tabhost=getTabHost();
//设置使用tabhost的布局
LayoutInflater.from(this).inflate(R.layout.activity_mytab, tabhost.getTabContentView(),true);
///加tab,tab里的布局是由另一个xml决定
tabhost.addTab(tabhost.newTabSpec("tab1").setContent(R.id.tab_1).setIndicator("选择卡1"));
tabhost.addTab(tabhost.newTabSpec("tab2").setContent(R.id.tab_2).setIndicator("选择卡2")); /*
///tabhost方法二:如果用方法二,可以不继承TabActivity了,因为用不到getTabHost方法
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mytab);///activity_mytab.xml里的格式见最下面代码 TabHost tabHost=(TabHost)findViewById(R.id.tabhost);///获取TabHost 通过findviewbyid
tabhost.setup();///在加tab到tabhost之前要执行此方法,也就是说通过findviewbyid方法获得tabhost必须setup(), 而通过getTabHost则不用。查看setup源码就知道为什么TabWidget和FrameLayout必须用系统自定义的id
///加tab
tabhost.addTab(tabhost.newTabSpec("tab1").setContent(R.id.tab_1).setIndicator("选择卡1"));
tabhost.addTab(tabhost.newTabSpec("tab2").setContent(R.id.tab_2).setIndicator("选择卡2"));
*/
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.tab, menu);
return true;
} } ///如果用方法二,activity_mytab。xml的格式必须如下:当然要包含Tabhost,TabWidget,FrameLayout,着3个标签:
/*
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabhost" ///id必须为tabhost
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabWidget
android:id="@android:id/tabs" ///id必须为tabs
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@android:id/tabcontent" ///id必须为tabcontent
android:layout_width="fill_parent"
android:layout_height="fill_parent">
///下面是两个tab布局 <LinearLayout
android:id="@+id/tab_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:layout_marginTop="72dp"
android:layout_toRightOf="@+id/textView1"
android:orientation="vertical" > <Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" /> <Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" /> </LinearLayout> <LinearLayout
android:id="@+id/tab_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/tab_1"
android:layout_below="@+id/tab_1"
android:layout_marginTop="116dp"
android:orientation="vertical" > <TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" /> <TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" /> </LinearLayout> </FrameLayout>
</LinearLayout>
</TabHost> */

activity_mytab.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MyTabActivity" > <TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" /> <LinearLayout
android:id="@+id/tab_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:layout_marginTop="72dp"
android:layout_toRightOf="@+id/textView1"
android:orientation="vertical" > <Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" /> <Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" /> </LinearLayout> <LinearLayout
android:id="@+id/tab_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/tab_1"
android:layout_below="@+id/tab_1"
android:layout_marginTop="116dp"
android:orientation="vertical" > <TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" /> <TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" /> </LinearLayout> </RelativeLayout>

TabHost用法的更多相关文章

  1. tabhost使用

    Tabhost用法 使用方法一:使用同一个布局文件 在xml中如此定义tabhost: <RelativeLayout xmlns:android="http://schemas.an ...

  2. TabHost的用法(转)

    本文结合源代码和实例来说明TabHost的用法. 使用TabHost 可以在一个屏幕间进行不同版面的切换,例如android自带的拨号应用,截图:  查看tabhost的源代码,主要实例变量有: pr ...

  3. 选项卡(TabHost)的功能与用法

    TabHost是一种非常实用的组件,TabHost可以很方便地在窗口上放置多个便签页,每个标签页相当于获得了一个与外部容器相同大小的组件摆法区域.通过这种方式,就可以在一个容器里放置更多组件,例如手机 ...

  4. ActivityGroup、TabHost之子页面不刷新——getLocalActivityManager() 以及intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)用法

    TabHost继承自ActivityGroup,以下不再单独列出. ActivityGroup在第一次创建的时候会完整的执行子Activity或子view的生命周期,但在从其他子activity或子v ...

  5. TabHost 简单用法

    package com.google.tabhost;    import android.app.TabActivity;  import android.os.Bundle;  import an ...

  6. 【Android 应用开发】Android - TabHost 选项卡功能用法详解

    TabHost效果图 : 源码下载地址 : http://download.csdn.net/detail/han1202012/6845105        . 作者 :万境绝尘  转载请注明出处  ...

  7. Android - TabHost 选项卡功能用法详解

    TabHost效果图 : 源码下载地址 : http://download.csdn.net/detail/han1202012/6845105        . 作者 :万境绝尘  转载请注明出处  ...

  8. Android选项卡TabHost功能和用法

    1.布局文件 <TabHost xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...

  9. xamarin android viewpager的用法

    1.什么是ViewPager 通过手势滑动可以完成view的切换,一般是用来app的引导页或则实现图片轮播,类似网页上的banner轮播. Adnroid 3.0后引入的一个UI控件,在xamarin ...

随机推荐

  1. POJ 2195Going Home(网络流之最小费用流)

    题目地址:id=2195">POJ2195 本人职业生涯费用流第一发!!快邀请赛了.决定还是多学点东西.起码碰到简单的网络流要A掉.以后最大流费用流最小割就一块刷. 曾经费用流在我心目 ...

  2. js中常见的一些兼容性问题

    1)滚动条: document.documentElement.scrollTop||document.body.scrollTop 2) 网页可视区域兼容 window.innerHeight || ...

  3. Linux基础:文件查找find

    写在前面 在linux的日常管理中,find的使用频率很高,熟练掌握对提高工作效率很有帮助. find的语法比较简单,常用参数的就那么几个,比如-name.-type.-ctime等.初学的同学直接看 ...

  4. 用IFeatureWorkspaceAnno.CreateAnnotationClass 创建注记图层时报“The application is not licensed to modify or create schema”的错误的解决方案。

    用IFeatureWorkspaceAnno.CreateAnnotationClass 的方法创建注记图层的时候报"The application is not licensed to m ...

  5. 查看Flink的Job Graph时的问题

    Flink运行Job时,可以通过Job Graph看到执行计划,但是如果用IE,会被坑: 换成谷歌Chrome,就OK了: 这个Job Grap,好像是SVG的,可能是IE不支持SVG,需要安装插件才 ...

  6. Wincc flexable的IO域组态

    1.题目 2.新建三个变量 3.组态画面,添加IO域1 1)常规设置 2)属性设置 4.组态IO域2 1)常规项 2)属性设置 5.组态第三个IO域 1)常规设置 2)属性设置 6.此外可以设置动画 ...

  7. Cat 客户端如何构建调用链消息树

    场景 & 代码 Inner0 中的某方法调用了 Inner1,代码 Inner1的代码很简单, Cat通过一个线程本地变量来保存调用链的相关信息,其中核心的数据结构是消息树和操作栈.消息树用来 ...

  8. 原生JavaScript实现一个简单的todo-list

    直接上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  9. touch监听判断手指的上滑,下滑,左滑,右滑,事件监听

    判断滑动的方向和距离,来实现一定的效果,比如返回上一页等等 <body> <script> $(function(){ //给body强制定义高度 var windowHeig ...

  10. windows server数据库备份

    @echo off //设置生成文件名字 set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"//使用mysqldump输出sql文件 cesec ...