Tab与TabHost

这就是Tab,而盛放Tab的容器就是TabHost
如何实现??
每一个Tab还对应了一个布局,这个就有点好玩了。一个Activity,对应了多个功能布局。
①新建一个Tab项目,注意,不要生成main Activity

这里不要选
②在包里面新建一个类MyTab,继承于TabActivity
其实,TabActivity是Activity的子类

  1. package zyf.tab.test;
  2. import android.app.TabActivity;
  3. public class MyTab extends TabActivity {
  4. }

复制代码

③从父类继承OnCreate()入口方法

  1. package zyf.tab.test;
  2. import android.app.TabActivity;
  3. import android.os.Bundle;
  4. public class MyTab extends TabActivity {
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. // TODO Auto-generated method stub
  8. super.onCreate(savedInstanceState);
  9. }
  10. }

复制代码

④在Manifest.xml文件中注册一下MyTab类(Activity)

  1. <activity android:name=".MyTab">
  2. <intent-filter>
  3. <action android:name="android.intent.action.MAIN"></action>
  4. <category android:name="android.intent.category.LAUNCHER"></category>
  5. </intent-filter>
  6. </activity>

复制代码

⑤这时候,需要设计一下标签页对应的布局,一般采用FrameLayout作为根布局,每个标签页面对应一个子节点的Layout

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!--  这里是根节点布局  -- >
  3. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:layout_width="fill_parent" android:layout_height="fill_parent">
  5. <!--  第一个Tab 对应的布局  -- >
  6. <LinearLayout android:id="@+id/widget_layout_Blue"
  7. android:layout_width="fill_parent" android:layout_height="fill_parent"
  8. androidrientation="vertical" >
  9. <EditText android:id="@+id/widget34" android:layout_width="fill_parent"
  10. android:layout_height="wrap_content" android:text="EditText"
  11. android:textSize="18sp">
  12. </EditText>
  13. <Button android:id="@+id/widget30" android:layout_width="wrap_content"
  14. android:layout_height="wrap_content" android:text="Button">
  15. </Button>
  16. </LinearLayout>
  17. <!--  第二个Tab 对应的布局  -- >
  18. <LinearLayout android:id="@+id/widget_layout_red"
  19. android:layout_width="fill_parent" android:layout_height="fill_parent"
  20. androidrientation="vertical"  >
  21. <AnalogClock android:id="@+id/widget36"
  22. android:layout_width="wrap_content" android:layout_height="wrap_content">
  23. </AnalogClock>
  24. </LinearLayout>
  25. <!--  第三个Tab 对应的布局  -- >
  26. <LinearLayout android:id="@+id/widget_layout_green"
  27. android:layout_width="fill_parent" android:layout_height="fill_parent"
  28. androidrientation="vertical">
  29. <RadioGroup android:id="@+id/widget43"
  30. android:layout_width="166px" android:layout_height="98px"
  31. androidrientation="vertical">
  32. <RadioButton android:id="@+id/widget44"
  33. android:layout_width="wrap_content" android:layout_height="wrap_content"
  34. android:text="RadioButton">
  35. </RadioButton>
  36. <RadioButton android:id="@+id/widget45"
  37. android:layout_width="wrap_content" android:layout_height="wrap_content"
  38. android:text="RadioButton">
  39. </RadioButton>
  40. </RadioGroup>
  41. </LinearLayout>
  42. </FrameLayout>

复制代码

⑥首先,应该声明TabHost,然后用LayoutInflater过滤出布局来,给TabHost加上含有Tab页面的FrameLayout

  1. private TabHost myTabhost;
  2. myTabhost=this.getTabHost();//从TabActivity上面获取放置Tab的TabHost
  3. LayoutInflater.from(this).inflate(R.layout.main, myTabhost.getTabContentView(), true);
  4. //from(this)从这个TabActivity获取LayoutInflater
  5. //R.layout.main 存放Tab布局
  6. //通过TabHost获得存放Tab标签页内容的FrameLayout
  7. //是否将inflate 拴系到根布局元素上
  8. myTabhost.setBackgroundColor(Color.argb(150, 22, 70, 150));
  9. //设置一下TabHost的颜色

复制代码

⑦接着,在TabHost创建一个标签,然后设置一下标题/图标/标签页布局

  1. myTabhost
  2. .addTab(myTabhost.newTabSpec("TT")// 制造一个新的标签TT
  3. .setIndicator("KK",
  4. getResources().getDrawable(R.drawable.ajjc))
  5. // 设置一下显示的标题为KK,设置一下标签图标为ajjc
  6. .setContent(R.id.widget_layout_red));
  7. //设置一下该标签页的布局内容为R.id.widget_layout_red,这是FrameLayout中的一个子Layout

复制代码

⑧标签切换事件处理,setOnTabChangedListener

  1. myTabhost.setOnTabChangedListener(new OnTabChangeListener(){
  2. @Override
  3. public void onTabChanged(String tabId) {
  4. // TODO Auto-generated method stub
  5. }
  6. });

复制代码

⑨各个标签页的动态MENU
先把在XML中设计好的MENU放到一个int数组里

  1. private static final int myMenuResources[] = { R.menu.phonebook_menu,
  2. R.menu.addphone_menu, R.menu.chatting_menu, R.menu.userapp_menu };

复制代码

在setOnTabChangedListener()方法中根据标签的切换情况来设置myMenuSettingTag

  1. @Override
  2. public void onTabChanged(String tagString) {
  3. // TODO Auto-generated method stub
  4. if (tagString.equals("One")) {
  5. myMenuSettingTag = 1;
  6. }
  7. if (tagString.equals("Two")) {
  8. myMenuSettingTag = 2;
  9. }
  10. if (tagString.equals("Three")) {
  11. myMenuSettingTag = 3;
  12. }
  13. if (tagString.equals("Four")) {
  14. myMenuSettingTag = 4;
  15. }
  16. if (myMenu != null) {
  17. onCreateOptionsMenu(myMenu);
  18. }
  19. }

复制代码

然后onCreateOptionsMenu(Menu menu) 方法中通过MenuInflater过滤器动态加入MENU

  1. @Override
  2. public boolean onCreateOptionsMenu(Menu menu) {
  3. // TODO Auto-generated method stub
  4. // Hold on to this
  5. myMenu = menu;
  6. myMenu.clear();//清空MENU菜单
  7. // Inflate the currently selected menu XML resource.
  8. MenuInflater inflater = getMenuInflater();
  9. //从TabActivity这里获取一个MENU过滤器
  10. switch (myMenuSettingTag) {
  11. case 1:
  12. inflater.inflate(myMenuResources[0], menu);
  13. //动态加入数组中对应的XML MENU菜单
  14. break;
  15. case 2:
  16. inflater.inflate(myMenuResources[1], menu);
  17. break;
  18. case 3:
  19. inflater.inflate(myMenuResources[2], menu);
  20. break;
  21. case 4:
  22. inflater.inflate(myMenuResources[3], menu);
  23. break;
  24. default:
  25. break;
  26. }
  27. return super.onCreateOptionsMenu(menu);
  28. }

复制代码

⑩运行效果

转载于:https://www.cnblogs.com/dongdong230/p/4183076.html

【Android 界面效果22】Android的Tab与TabHost相关推荐

  1. 【Android 界面效果9】9patch图片

    1.什么是"9妹"(9patch)? 它是一个对png图片做处理的一个工具,能够为我们生成一个"*.9.png"的图片;  2.何为"*.9.png& ...

  2. 【Android 界面效果49】RecyclerView高度随Item自适应

    编写RecyclerView.ItemDecoration时,在onDraw方法中,Drawable的高度等于RecyclerView的高度减去RecyclerView的上下padding. @Ove ...

  3. android 头像球_【Android 界面效果44】Android之圆头像实例

    在很多应用中,我们看到,个人主页里面的头像一般都是圆的,设计成圆的会使整个界 面布 局变的优雅漂亮.那么,怎么使头像变圆呢?有的人说可以在上面加一个中间为透明圆形的png图,用它来遮盖住头像不就行了嘛 ...

  4. android动画效果 translate,Android利用translate、scale、alpha、rotate实现动画效果

    Android利用translate.scale.alpha.rotate实现动画效果 在Android中可以用animation实现动画效果,Android中的animation由四种类型组成: a ...

  5. android界面图标大全,Android UI设计常识和Android UI界面欣赏酷站推荐

    这几天都是iphone6的信息.25学堂根据群里网友的一些建议.今天把android设计的一些基本规范和设计尺寸常识再来罗列一下. 之前25学堂认真整理的关于android ui设计规范的知识点如下: ...

  6. android 心跳效果动画,Android 心跳动画

    直接上代码  MainActivity public class MainActivity extends AppCompatActivity { private ImageView ivHart; ...

  7. android幻灯片效果自定义,Android自定义View实现仿网易音乐唱片播放效果

    本文实例为大家分享了Android实现仿网易音乐唱片播放效果的具体代码,供大家参考,具体内容如下 效果图: 在values中创建attrs.xml文件 //中间图片的半径 //图片 //唱片旋转的速度 ...

  8. android 界面淡入淡出,Android动画之淡入淡出

    以下内容来自Android Training,本人在此基础上作一些个人实践和记录,以便参考 效果 带crossfading: crossfade_yes by keith 无crossfading下: ...

  9. 【Android 界面效果10】Android中View,ViewGroup,Window之间的关系

    一.首先说说View和ViewGroup吧 Android系统中的所有UI类都是建立在View和ViewGroup这两个类的基础上的.所有View的子类成为"Widget",所有V ...

最新文章

  1. java实现用户登录注册功能(用集合框架来实现)
  2. server 2008 配置php mysql_Win2008 Server配置PHP环境
  3. 初学者linux和ubuntu,linux初学者也必须知道的几个ubuntu最基础命令
  4. 网易暴力裁撤绝症员工后,多益网络徐波、孙宇晨都要出钱给该离职员工治病!...
  5. 微信推送封面尺寸_48张微信朋友圈个性封面图片大全 让来看你朋友圈的人眼前一亮!...
  6. 转:OWASP发布Web应用程序的十大安全风险
  7. 为什么单击用户账户没有反应_win10用户获取最高权限的方法
  8. go - struct
  9. 设计自己的ImageLoader图片加载框架
  10. matlab中的m-file,MATLAB m-file帮助格式化
  11. 模板(范型)的安全数组C++代码
  12. 记录下关于qt使用windeployqt.exe打包程序之后运行报错无法定位程序输入点
  13. st8s003 c语言编译器,ST系列STM8S003F3P6单片机芯片介绍
  14. android word文件编辑器,docx文档编辑
  15. adb shell 查看CPU架构
  16. windows安装ffmpeg,yasm,opencv
  17. EasyExcel web上传下载功能实现
  18. part1-CST建模
  19. 惠普刀片服务器c7000硬件配置手册_HP C7000刀片机配置
  20. Rabbit的工作原理

热门文章

  1. 小学文凭有计算机知识,重大版小学信息技术毕业复习题
  2. mysql 主键 uniqo_优衣库某处SQL注入可导致移动平台被劫持
  3. 分布式事务框架 seata-golang 通信模型详解
  4. 率先通过信通院容器规模化测评 阿里云获最高认证级别
  5. 使用 cglib_CGLib 动态代理 原理解析
  6. android 开源fc模拟器_星标 4.5K!又一个跨端框架,腾讯开源内部跨端统一开发框架:Hippy...
  7. linux函数没有返回值导致溢出,Shell中函数返回值超出问题
  8. centos mate桌面_CentOS 7安装桌面汇总
  9. xcode 可以打开xmind_原来xmind还有一款如此漂亮的思维导图工具
  10. 【AI初识境】什么是深度学习成功的开始?参数初始化