• android空间学习之tabhost


    学习完布局,接下来就是一些常用的控件了,这里介绍下tabhost

    先上布局xml

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <TabHost
     3 android:id="@android:id/tabhost"
     4 xmlns:android="http://schemas.android.com/apk/res/android"
     5 android:layout_width="fill_parent" android:layout_height="fill_parent">
     6 <TabWidget android:id="@android:id/tabs" android:layout_height="wrap_content" android:layout_width="fill_parent">
     7 </TabWidget>
     8 <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent">
     9 </FrameLayout>
    10 </TabHost>
    上面的配置文件就是tabhost的基础布局
    TabHost,TabWidget,FrameLayout三个标签对应的id必须是tabhost,tabs,tabcontent,选项卡的内容布局必须是framelayout布局

    否则会报空指针异常提示相应的id缺少
    比如:Your TabHost must have a TabWidget whose id attribute is 'android.R.id.tabs'

    布局后的xml

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <TabHost
     3 android:id="@android:id/tabhost"
     4 xmlns:android="http://schemas.android.com/apk/res/android"
     5 android:layout_width="fill_parent" android:layout_height="fill_parent">
     6 <LinearLayout android:id="@+id/linearlayout1" android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical">
     7 <TabWidget android:id="@android:id/tabs" android:layout_height="wrap_content" android:layout_width="fill_parent">
     8 </TabWidget>
     9 <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent">
    10 <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/tabcontent1" android:text="第一个选项卡内容"></TextView>
    11           <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/tabcontent2" android:text="第二个选项卡内容"></TextView>
    12           <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/tabcontent3" android:text="第三个选项卡内容"></TextView>
    13 </FrameLayout>
    14 </LinearLayout>
    15 </TabHost>

    java代码

     1 public class TabWidgetActivity extends TabActivity {
     2     private TabHost mTabHost;
     3 
     4     @Override
     5     protected void onCreate(Bundle savedInstanceState) {
     6         // TODO Auto-generated method stub
     7         super.onCreate(savedInstanceState);
     8         setContentView(R.layout.tab_widget);
     9 
    10         //获取TabHoast对象
    11         mTabHost=getTabHost();
    12         /* 为TabHost添加标签 */
    13         //新建一个newTabSpec(newTabSpec)
    14         //设置其标签和图标(setIndicator)
    15         //设置内容(setContent)
    16         Intent intent=new Intent();
    17         intent.setClass(this, Test.class);
    18         mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("TAB1",getResources().getDrawable(R.drawable.img1)).setContent(R.id.tabcontent1));
    19         //mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB2",getResources().getDrawable(R.drawable.img2)).setContent(R.id.tabcontent2));
    20         mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB2",getResources().getDrawable(R.drawable.img2)).setContent(intent));
    21         mTabHost.addTab(mTabHost.newTabSpec("tab_test3").setIndicator("TAB3",getResources().getDrawable(R.drawable.img3)).setContent(R.id.tabcontent3));
    22         
    23         //设置TabHost的背景颜色
    24         mTabHost.setBackgroundColor(Color.argb(150, 22, 70, 150));
    25         
    26         //显示第一个tab
    27         mTabHost.setCurrentTab(0);
    28 
    29     }
    30 }

    这里解释下

    newTabSpec(String tab) 返回一个TagSpec对象(即一个选项卡对象)
    addTab(TabHost.TabSpec tabSpec)添加选项卡

    setIndicator(CharSequence label, Drawable icon)设置标签和图片资源
    setContent(int viewId)添加选项卡面板内容(也可以是一个intent 跳转到另外一个activity)

    添加一个tabwidget的过程如下
    1      TabSpec tabObj = mTabHost.newTabSpec("选项卡对象");
    2         tabObj.setContent(intent);//添加内容视图
    3         Resources resources = getResources();//创建资源对象
    4         Drawable drawable = resources.getDrawable(R.drawable.icon);//添加资源内容
    5         tabObj.setIndicator("标签名", drawable);//往选项卡添加资源对象

    注意的是类必须继承TabActivity 



  • 相关阅读:
    Java基础知识强化102:线程间共享数据
    Java(Android)编程思想笔记02:组合与继承、final、策略设计模式与适配器模式、内部类、序列化控制(注意事项)
    Android开发经验01:31个Android开发实战经验
    TCP/IP协议原理与应用笔记19:IP分组的交付和路由选择
    Android 高级UI设计笔记08:Android开发者常用的7款Android UI组件(转载)
    Java(Android)编程思想笔记01:多态性的理解
    Java基础知识强化之集合框架笔记75:哈希表
    重置 linux系统后要配置的基本组件操作
    记一个空格导致的三小时排查
    windows无法启动redis服务,错误码1067
  • 原文地址:https://www.cnblogs.com/draem0507/p/2740751.html
Copyright © 2020-2023  润新知