安卓 Tab 标签-利用 TabHost、TabWidget、FrameLayout 啰里八嗦实现 Tab 标签控件

首先 XML 布局代码

TabHost 是整个 Tab 的外围,TabWidget 是标签头、FrameLayout 是标签内容框。

android:id="@+id/tabHost"

android:layout_width="match_parent"

android:layout_height="wrap_content">

android:id="@android:id/tabs"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:soundEffectsEnabled="false">

android:id="@android:id/tabcontent"

android:layout_width="match_parent"

android:layout_height="wrap_content">

android:id="@+id/tabContent1"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal">

android:id="@+id/tabContent2"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal">

android:id="@+id/tabContent3"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal">

几个控件的层级如下:TabHostTabWidget

FrameLayoutLinearLayout

LinearLayout

LinearLayout

以下几个控件除了 LinearLayout,其他都必须用上述指定的控件,并且 TabWidget 的 id 必须是:@android:id/tabs,FrameLayout 的 id 必须是:@android:id/tabcontent。擦,写这个控件的人被开除没有啊。

可以看出标签头并没有具体配置,因为它是在代码中配置的。继续看 java 代码。

java 代码m_tabHost = m_view.findViewById(R.id.tabHost);

m_tabHost.setup(); // 如果少了这句,tabHost.setContent 会出错,且 Android Studio 调试状态也不会提示是什么错误

TabHost.TabSpec ts1 = m_tabHost.newTabSpec("tab1");

ts1.setIndicator("基础信息");

ts1.setContent(R.id.tabContent1);

m_tabHost.addTab(ts1);

TabHost.TabSpec ts2 = m_tabHost.newTabSpec("tab2");

ts2.setIndicator("学历教育");

ts2.setContent(R.id.tabContent2);

m_tabHost.addTab(ts2);

TabHost.TabSpec ts3 = m_tabHost.newTabSpec("tab3");

ts3.setIndicator("任职经历");

ts3.setContent(R.id.tabContent3);

m_tabHost.addTab(ts3);

m_tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {

@Override

public void onTabChanged(String s) {

int tabIndex = m_tabHost.getCurrentTab();

}

});

首先 findViewById tabHost,且调用 setup。

其次 newTabSpec,再通过 setIndicator、setContent 指定标签头和标签内容页,最后再 addTab(我觉得安卓设计得真啰嗦)。setIndicator 可以指定 View 实现高级效果,也可以像示例中一样简单地指定文字。

此时点击标签头,会自动切换对应的标签内容页,如果我们要监测事件,可用:setOnTabChangedListener,并通过 getCurrentTab 获取当前标签项。

样式

取消分隔线条:

然后当你要改变 TabWidget 下划线颜色时,会发现要实现这个效果写的代码真是又臭又长。此时你可以改用 TabLayout。请继续阅读下节。

安卓 Tab 标签-利用 TabHost、TabWidget、FrameLayout 啰里八嗦实现 Tab 标签控件

android 标签样式布局,安卓 Tab 标签-利用 TabHost、TabWidget、FrameLayout 啰里八嗦实现 Tab 标签控件...相关推荐

  1. Android 屏幕适配攻略(四)获取手机屏幕的相关信息 与动态设置控件的大小

    Android 屏幕适配攻略(四)获取手机屏幕的相关信息 与动态设置控件的大小 1 动态获取手机屏幕的 屏幕密度与对应像素比例 例如在 320 * 480 尺寸为 3.2 英寸的手机 ,对应的像素密度 ...

  2. Android仿苹果版QQ下拉刷新实现(一) ——打造简单平滑的通用下拉刷新控件

    前言: 因为公司人员变动原因,导致了博主四个月没有动安卓,一直在做IOS开发,如今接近年前,终于可以花一定的时间放在安卓上了.好了,废话不多说,今天我们要带来的效果是苹果版本的QQ下拉刷新.首先看一下 ...

  3. android 价格排序筛选页面,Android应用开发之基于Popupwindow实现的筛选房源信息等相关的可自由排序控件...

    本文将带你了解Android应用开发Android开发基于Popupwindow实现的筛选房源信息等相关的可自由排序控件,希望本文对大家学Android有所帮助. 功能 区分 支持区域二级选择     ...

  4. Android 第十八课 强大的滚动控件 RecyclerView

    步骤: 一.添加依赖库 compile'com.android.support:recyclerview-v7:26.1.0' 二.在activity_mian.xml中,添加RecyclerView ...

  5. MFC开发IM-第八篇、调整各个控件的上下tab顺序

    在资源管理视图中, Ctrl+D 快捷键 改变控件的Tab顺序. 数字小的好像在下层吧(忘记数字小的是上层还是下层了 你自己试试吧.) 把GroupBox放到bmp背景的上层就OK了.

  6. android从九宫格全屏预览,仿微信朋友圈展示图片的九宫格图片展示控件,支持点击图片全屏预览大图...

    AssNineGridView 仿微信朋友圈展示图片的九宫格图片展示控件,支持点击图片全屏预览大图(可自定义). 写在前面 这是一个九宫格控件,本来是很久之前就写好了,现在才开源出来,也是看了很多优秀 ...

  7. (转) android里,addContentView()动态增加view控件,并实现控件的顶部,中间,底部布局...

    http://blog.csdn.net/bfboys/article/details/52563089 转载于:https://www.cnblogs.com/zhangminghan/p/6182 ...

  8. android storyboard,iOS中xib与storyboard原理,与Android界面布局的异同

    用文本标记语言来进行布局,用的最多的应该是HTML语言.HTML能够理解为有一组特殊标记的XML语言. 一.iOS中xib与storyboard显示原理 在iOS中基本的布置界面的方式有3种:代码.x ...

  9. 认识Android(常用布局,控件,四大组件,动画,自定义控件及异常消息处理机制)

    目录 一.布局 1.LinearLayout(线性布局): 2.相对布局(RelativeLayout) 3.GridLayout(网格布局) 4.FrameLayout(帧布局): 二.控件 1.T ...

最新文章

  1. springmvc请求参数获取(自动绑定)的几种方法
  2. Windows Mobile设备操作演示准备工作小记
  3. 若依微服务版新建业务模块后提示找不到mapper的解决方法
  4. vs2017 java sdk_系统无法找到Visual Studio 2017 ASP.NET核心项目
  5. c#子线程和主线程创建窗体时顶层显示的区别
  6. 【UIKit】UITableView 3
  7. 软件构造学习笔记-第十二周
  8. 这个为生信学习打造的开源Bash教程真香!!(目录更新)!
  9. 15天掌握Al声纹识别,同盾开启智能风控建模赛训
  10. Java 中如何实现保留两位小数 — DecimalFormat
  11. Ubuntu Server Nginx 下配置 mono 下运行 asp.net mvc
  12. L2-028 秀恩爱分得快
  13. N81新手入门全攻略——N81常规设置问答篇
  14. 亚马逊中国发布2015图书排行榜
  15. 电源输出端串入IN4007,测量正负电压,压降只有0.3v,为什么不是0.7v左右呢?
  16. 农夫山泉又上热搜,虚假宣传、拒不认错让网友反感至极!
  17. E4G刷Linux,易视宝E4-G 全志A20 刷机 armlinux ubuntu server 教程
  18. N76E003 串口ISP如何使用
  19. 用“找回你”,查找手机号的前身都被注册过些什么……
  20. HUNER翻译软件测试面试题,外企测试面试常见问题及回答(英文)

热门文章

  1. sipeed固件下载说明
  2. Asch和ETH ,Lisk的对比
  3. 3d建模真的很累吗?前景怎么样
  4. 小红书“复刻”微信,微信“内造”小红书
  5. 如何获取Dataframe的行数和列数
  6. 轻松查询多个圆通国际物流详情,并筛选代收单号
  7. 常见监控软件介绍及原理介绍
  8. 云呐|RFID技术传统固定资产管理行业科技创新
  9. 聊聊汽车OTA测试:从OTA测试浅谈汽车电子测试发展趋势
  10. 显卡mx150和230哪个好_显卡mx150和gtx多少相当?