利用TabWidget实现底部菜单

TabWidget类似于通话记录的界面,通过切换多个标签从而显示出多个不同内容,能够展示内容丰富的页面信息,而且彼此之间不会干扰,有利于展示。下面,通过一个例子来学习用法

首先用一个类来继承TabActivity

在开发之前,我们要首先了解,TabHost是整个Tab的容器,包括两部分,TabWidget和FrameLayout。TabWidget就是每个tab的标签,FrameLayout则是tab内容。接着我们开始初始化main.xml。
首先声明TabHost,包含TabWidget,FrameLayout元素。

    <TabHost android:id="@android:id/tabhost"  //声明控件IDandroid:layout_width="fill_parent"    //控件宽度与父控件一致android:layout_height="fill_parent">  //控件高度与父控件一致
声明TabWidget,tab标签页<TabWidget android:layout_width="fill_parent"      //控件宽度与父控件一致android:layout_height="wrap_content"   //控件高度与自身适应android:id="@android:id/tabs">    //声明控件ID
声明FrameLayout,tab页里的内容信息<FrameLayout android:layout_width="fill_parent"   //控件宽度与父控件一致android:layout_height="wrap_content"  //控件高度与自身适应android:id="@android:id/tabcontent">   //声明控件ID

注意下:
如果我们使用extends TabAcitivty,如同ListActivity,TabHost必须设置为@android:id/tabhost
TabWidget必须设置android:id为@android:id/tabs
FrameLayout需要设置android:id为@android:id/tabcontent

布局文件

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:id="@android:id/tabhost" ><LinearLayout
        android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent"android:layout_height="0.0dip"android:layout_weight="1.0"/><TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent"android:layout_height="wrap_content"android:visibility="gone"/><RadioGroup
             android:id="@+id/tab_items"android:gravity="center_vertical"android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_gravity="bottom"android:background="@drawable/tab_bg"><RadioButton
                   android:id="@+id/tab_item_home"android:checked="true"                     style="@style/main_tab_bottom"android:background="@drawable/item_home_bg" /><RadioButton
                   android:id="@+id/tab_item_nearby"  style="@style/main_tab_bottom"android:background="@drawable/item_near_bg"/><RadioButton
                   android:id="@+id/tab_item_sort"   style="@style/main_tab_bottom"android:background="@drawable/item_sort_bg" /><RadioButton
                   android:id="@+id/tab_item_mine"  style="@style/main_tab_bottom"android:background="@drawable/item_mine_bg"/>                <RadioButton
                   android:id="@+id/tab_item_more"  style="@style/main_tab_bottom" android:background="@drawable/item_more_bg" /></RadioGroup></LinearLayout></TabHost>

其中有些控件的图片点击与正常情况下是不同的,如item_home_bg.xml文件

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" ><item android:state_checked="true" android:drawable="@drawable/but_index_r_v2" /><item android:drawable="@drawable/but_index_v2"/>
</selector>

style文件在values文件夹下的styles.xml文件中定义

<?xml version="1.0" encoding="utf-8"?>
<resources><style name="main_tab_bottom"><item name="android:gravity">center_horizontal</item><item name="android:layout_width">fill_parent</item><item name="android:layout_height">wrap_content</item><item name="android:button">@null</item><item name="android:layout_weight">1.0</item></style></resources>  

函数实现

public class MyTab extends TabActivity{private final static String TAG = "TabShow";private TabHost mHost;private RadioGroup tabItems;private RadioButton mineBut;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.tablay);initResourceRefs();initSettings();}private void initSettings() {// TODO Auto-generated method stubtabItems.setOnCheckedChangeListener(new OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {// TODO Auto-generated method stubswitch(checkedId){case R.id.tab_item_home :mHost.setCurrentTabByTag("HOME");break;case R.id.tab_item_nearby :mHost.setCurrentTabByTag("NEAR");break;case R.id.tab_item_sort :mHost.setCurrentTabByTag("SORT");break;         case R.id.tab_item_more :mHost.setCurrentTabByTag("MORE");break;}}});}private void initResourceRefs() {// TODO Auto-generated method stubmHost = getTabHost();mHost.addTab(mHost.newTabSpec("HOME").setIndicator("HOME").setContent(new Intent(this , HomeActivity.class)));mHost.addTab(mHost.newTabSpec("NEAR").setIndicator("NEAR").setContent(new Intent(this , NearByActivity.class)));mHost.addTab(mHost.newTabSpec("SORT").setIndicator("SORT").setContent(new Intent(this , SortActivity.class)));mHost.addTab(mHost.newTabSpec("My").setIndicator("My").setContent(new Intent(this , MyActivity.class)));mHost.addTab(mHost.newTabSpec("MORE").setIndicator("MORE").setContent(new Intent(this , MoreActivity.class)));tabItems = (RadioGroup)findViewById(R.id.tab_items);mineBut = (RadioButton)findViewById(R.id.tab_item_mine);}}

效果如下

如下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494360.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信通院2018人工智能发展白皮书技术篇重磅发布

来源&#xff1a;网路大数据9月6日&#xff0c;2018中国人工智能峰会(CAIS2018)在南京国际博览会议中心召开。斯坦福客座教授吴恩达以Landng.ai创始人、CEO的身份出席了峰会&#xff0c;并在主论坛上做了题为《人工智能赋能新时代》的主题演讲。除了各路大咖的精彩演讲之外&…

量子计算赛道上的巨头拉锯战

来源&#xff1a;网易智能据国外媒体报道&#xff0c;长期以来量子计算机一直被吹捧为功能强大得令人难以置信的机器。相比于世界上现有的计算机&#xff0c;量子计算机能够以更快的速度解决极其复杂的计算问题。但目前还没有就开发量子计算机的最佳方式达成一致。最终谁将赢得…

信通院AI白皮书:硬核干货一文打尽,从技术流派到应用趋势【附下载】

来源&#xff1a;智东西摘要&#xff1a;从产业发展的角度&#xff0c;分析AI技术现状、问题以及趋势&#xff0c;盘点智能语音、语义理解、计算机视觉等相关应用。自2016年AlphaGo击败李世石之后&#xff0c;人工智能&#xff08;AI&#xff09;这个再度翻红的科技热词已经在争…

正则学习笔记

用途 字符匹配 语法 常用元字符 []    区间范围框 枚举值  [a-z0-9A-Z_] |    分枝条件或 \    特殊转义符&#xff08;取消转义&#xff09; \W [^A-Za-z0-9_] [\r\n] 换行符匹配 [\u4e00-\u9fa5] 汉字 [\s\S] 任意字符 限定符 贪婪匹配&…

Android之UI控件

本文主要包括以下内容 Spinner的使用 Gallery的使用 Spinner的使用 Spinner的实现过程是 1. 在xml文件中定义Spinner的控件 2. 在activity中获取Spinner控件 3. 定义Spinner下拉列表项数组并将下拉项的内容添加到这个数组中&#xff0c;通过这个数组建立一个下拉列表的适…

大脑如何判断该睡觉了?可能是这80种蛋白说了算

来源&#xff1a;科研圈撰文&#xff1a;Veronique Greenwood翻译&#xff1a;石云雷编辑&#xff1a;戚译引睡眠对于正常的学习和身体健康至关重要&#xff0c;但科学家们仍未完全了解睡眠在恢复大脑功能方面的作用和我们会感到困倦的原因。而通过对基因突变小鼠不寻常睡眠需求…

ImageLoader实现图片异步加载

ImageLoader是一个广泛使用的图片库,在向网络请求图片时&#xff0c;使用imageView和smartView常会产生outofmemory错误&#xff0c;这时ImageLoader可以起到很大的作用&#xff0c;主要有如下功能 一、功能特性&#xff1a; 多线程异步加载和显示图片&#xff08;图片来源于…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 26丨广告效果【难度简单】​

【未来的你&#xff0c;会感谢今天努力的你】每日两题&#xff0c;一难一易&#xff0c;每天进步一点点&#xff0c;可能会直接导致一场面试的成功&#xff0c;或工作的轻松搞定&#xff0c;从而升职加薪迎娶白富美&#xff0c;加油小伙伴&#xff01; &#x1f345;举办场地&a…

AI芯片最新格局分析

来源&#xff1a;中金公司&#xff0c;作者黄乐平、何玫与杨俊杰AI 芯片设计是人工智能产业链的重要一环。 自 2017 年 5 月以来&#xff0c;各 AI 芯片厂商的新品竞相发布&#xff0c;经过一年多的发展&#xff0c;各环节分工逐渐明显。 AI 芯片的应用场景不再局限于云端&…

原理图学习笔记一

画个草图也挺过瘾 转载于:https://www.cnblogs.com/retacn-yue/archive/2013/02/17/3263137.html

Android Studio安装与配置

谷歌已经停止支持eclipse开发android了&#xff0c;转向android studio是大势所趋&#xff0c;笔者由于电脑配置的原因&#xff0c; 以前迟迟不愿意向android studio&#xff0c;现如今因为开始学习material design,不得不转向android studio了&#xff0c; 费了一番功夫&…

材料界的魔术师:值得关注的10家超材料创业公司

来源&#xff1a;资本实验室超材料是具有人工设计的结构并呈现出天然材料所不具备的超常物理性质的人工复合结构或复合材料。典型的超材料有&#xff1a;“左手材料”、光子晶体、“超磁性材料”等。通俗地说&#xff0c;通过超材料技术&#xff0c;我们将能够摆脱来自自然界原…

Android之ScrollView

1、ScrollView和HorizontalScrollView是为控件或者布局添加滚动条 2、上述两个控件只能有一个孩子&#xff0c;但是它并不是传统意义上的容器 3、上述两个控件可以互相嵌套 4、滚动条的位置现在的实验结果是&#xff1a;可以由layout_width和layout_height设定 5、ScrollV…

百余位中外学者探讨神经科技挑战:伦理担忧与监管难题并存

来源&#xff1a;澎湃新闻“脑电图图纸也许会读出人的意识”、“脑机接口技术可能使个人的行为被他人操纵”、“人造大脑的发明可能取代人类的角色”……这些形形色色的言论道出了人们对于神经科学的道德和伦理担忧。澎湃新闻专访了神经伦理学领域的研究人员&#xff0c;就神经…

Android之ActionBar

本文主要包括以下内容 ActionBar的显示及隐藏&#xff0c;添加图标&#xff0c;返回主页 ActionBar添加ActionView,添加ActionProvider ActionBar实现Tab ActionBar添加下拉列表 ActionBar介绍 在Android 3.0中除了我们重点讲解的Fragment外&#xff0c;Action Bar也是一个…

国内智能音箱市场逐渐崛起,那么问题来了……

来源&#xff1a;AI锐见“嗨&#xff0c;Alexa&#xff0c;放首歌。”2014年&#xff0c;搭载了亚马逊虚拟语音个人助理Alexa的Echo面世&#xff0c;让人类同机器的交互方式出现了另一种可能。苹果联合创始人Steve Wozniak就曾在2016年表示&#xff0c;智能语音交互将成为计算领…

保留小数点位数和格式

JS 中 1. double运算 c parseFloat(a) parseFloat(b)) 2. 四舍五入&#xff0c;保留两位小数 c c.toFixed(2); 3. 去掉小数点后面多余的0 c c.toFixed(2)*100/100; JAVA中 Java代码 //四舍五入&#xff0c;保留指定小数位 public static Double roundDouble(Object obj, in…

Material Design入门

本文主要包括以下内容 ToolBar的使用 RecyclerView的定义与使用 ToolBar 风格 (style) 界面 (layout) 程序 (java) 首先自定义一个theme,并将AppTheme的parent改成我们自定义的theme (style.xml) <resources><style name"BaseAppTheme" parent"…

DARPA宣布未来五年将投资20亿美元开发下一波人工智能技术

来源&#xff1a;国防科技信息网作者&#xff1a;丁宏 中国船舶工业综合技术经济研究院 美国DARPA近日宣布&#xff0c;计划在未来5年内投资20亿美元用于开发下一波人工智能技术&#xff0c;寻求情境推理能力等技术的突破&#xff0c;使其有能力识别新的场景和环境并加以适应&a…

Material Design入门(二)

本文主要包括以下内容 侧滑菜单DrawerLayout实现 CardView实现 DrawerLayout介绍 drawerLayout是Support Library包中实现了侧滑菜单效果的控件&#xff0c;可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后&#xff0c;google借鉴而出现的产物。drawerLayout分…