Android FragmentTabHost底部选项卡实现
记录一下底部选项卡的实现,很常见的代码,大神勿嘲笑。
说一下思路,在activity底部要放上FragmentTabHost放上选项,几个无所谓,每个选项卡都对应一个fragment,点击选项卡颜色改变可以用selector(选择器)来实现,焦点选中的时候一个颜色,失去焦点的时候,另一个颜色。
首先,activity布局
<?xml version="1.0" encoding="utf-8"?>
<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"
tools:context="com.example.sdtz.wenmingweifang.MainActivity">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:id="@+id/fl"> </FrameLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#ffffff"
android:gravity="center"
android:orientation="vertical">
<android.support.v4.app.FragmentTabHost
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/fl"
android:id="@+id/tabHost"> </android.support.v4.app.FragmentTabHost>
</LinearLayout>
</RelativeLayout>
acitivity中主要代码的代码,其中view1,view2.....就是选项卡的内容,一般就是一张图片,下面一段文字(首页啥的),标红的部分,就是每个界面的fragment,可以在各个fragment中写每个界面的代码
tabHost = (FragmentTabHost) findViewById(R.id.tabHost);
view = LayoutInflater.from(getBaseContext()).inflate(R.layout.pop_window1,null);
view1 = LayoutInflater.from(getBaseContext()).inflate(R.layout.shouye_view,null);
view2 = LayoutInflater.from(getBaseContext()).inflate(R.layout.shouye_2_view,null);
view3 = LayoutInflater.from(getBaseContext()).inflate(R.layout.shouye_3,null);
view4 = LayoutInflater.from(getBaseContext()).inflate(R.layout.shouye_4,null);
view5 = LayoutInflater.from(getBaseContext()).inflate(R.layout.shouye_5,null);
try{
tabHost.setup(this,getSupportFragmentManager(),R.id.fl);
Fragment mainFragment = new MianFragment();
TabHost.TabSpec tabSpec0 =
tabHost.newTabSpec(str[0]).setIndicator(view1);
tabHost.addTab(tabSpec0,mainFragment.getClass(),null); Fragment SecondFragment = new SencondFragment();
TabHost.TabSpec tabSpec2 =
tabHost.newTabSpec(str[1]).setIndicator(view2);
tabHost.addTab(tabSpec2,SecondFragment.getClass(),null); Fragment ShezhiFragmet = new ShezhiFragment();
TabHost.TabSpec tabSpec1 =
tabHost.newTabSpec(str[2]).setIndicator(view3);
tabHost.addTab(tabSpec1,ShezhiFragmet.getClass(),null); Fragment MoreFragment = new MoreFragment();
TabHost.TabSpec tabSpec4 =
tabHost.newTabSpec(str[3]).setIndicator(view4);
tabHost.addTab(tabSpec4,MoreFragment.getClass(),null); Fragment MeFragment = new MeFragment(); TabHost.TabSpec tabSpec5 =
tabHost.newTabSpec(str[4]).setIndicator(view5);
tabHost.addTab(tabSpec5,MeFragment.getClass(),null);
}catch (Exception e){
e.printStackTrace();
}
下面是选项卡的xml,标志的部分就是 选择器,标记的部分就是选择器,用来选项卡的颜色变化
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_marginTop="@dimen/y10"
android:layout_width="match_parent"
android:layout_height="20dp"
android:src="@drawable/shouye_view_select"
android:id="@+id/img"/>
<TextView
android:layout_marginBottom="@dimen/y10"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:textColor="@drawable/shouye_1_text"
android:textSize="12sp"
android:text="首页"/>
</LinearLayout>
选择器代码:
就是有两张不同颜色的图片,焦点选中和不选中切换不同的图片,android:state_selected="true",就是焦点选中,
文字的选择器也是一样,切换不同的颜色
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_selected="true"
android:drawable="@drawable/home_on">
</item> <item android:drawable="@drawable/home"> </item>
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_selected="true"
android:color="#fd0101">
</item> <item android:color="#000000"> </item>
</selector>
至此,选项卡的代码已经基本完成,调试一下就可以运行了
Android FragmentTabHost底部选项卡实现的更多相关文章
- FragmentTabHostBottomDemo【FragmentTabHost + Fragment实现底部选项卡】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 使用FragmentTabHost实现底部选项卡效果. 备注:该Demo主要是演示FragmentTabHost的一些设置和部分功能 ...
- Android应用底部导航栏(选项卡)实例
现在很多android的应用都采用底部导航栏的功能,这样可以使得用户在使用过程中随意切换不同的页面,现在我采用TabHost组件来自定义一个底部的导航栏的功能. 我们先看下该demo实例的框架图: 其 ...
- Fragment实现底部选项卡切换效果
现在很多APP的样式都是底部选项卡做为首页的,实现这样的效果,我们一般有这样几种方式,第一,最屌丝的做法,我直接自定义选项卡视图,通过监听选项卡视图,逻辑控制内容页的切换,这样做的想法一般是反正这几个 ...
- TabBottomFragmentLayout【自定义底部选项卡区域(搭配Fragment)】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 自定义底部选项卡布局LinearLayout类,然后配合Fragment,实现切换Fragment功能. 缺点: 1.底部选项卡区域 ...
- TabLayoutBottomDemo【TabLayout实现底部选项卡】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 使用TabLayout实现底部选项卡切换功能. 效果图 代码分析 1.演示固定模式的展现 2.演示自定义布局的实现 使用步骤 一.项 ...
- MUI框架开发HTML5手机APP(二)--页面跳转传值&底部选项卡切换
概 述 JRedu 在上一篇博客中,我们学习了如何使用Hbuilder创建一个APP,同时如何使用MUI搭建属于自己的第一款APP,没有学习的同学可以戳链接学习: http://www.cnblo ...
- MUI框架-12-使用原生底部选项卡(凸出图标案例)
MUI框架-12-使用原生底部选项卡(凸出图标案例) 今天,用 mui 做 app 时,遇到了可能各位都遇到过的头疼问题:底部中间图标凸起,如下图: 最后有源代码 [提示]:有人问我在 HBuilde ...
- Android 修改底部导航栏navigationbar的颜色
Android 修改底部导航栏navigationbar的颜色 getWindow().setNavigationBarColor(Color.BLUE); //写法一 getWindow().set ...
- HTML5 开发APP(头部和底部选项卡)
我们开发app有一定固定的样式,比如头部和底部选项卡部分就是公共部分就比如我在做的app进来的主页面就像图片显示的那样 我们该怎么实现呢,实现我们应该建一个主页面index.html,然后建五个子页面 ...
- Android自定义底部带有动画的Dialog
Android自定义底部带有动画的Dialog 效果图 先看效果图,是不是你想要的呢 自定义Dialog package --.view; import android.app.Dialog; imp ...
随机推荐
- Django(2) - Django模板
1.Django模板介绍 基础概念 模板是具有一定的格式或骨架,可以动态的生成HTML 模板引擎决定以何种方式组织代码 一个项目可以有一个或者是多个模板引擎,Django里面主要两个模板引擎:DTL. ...
- [数据与分析可视化] D3入门教程1-d3基础知识
d3.js入门教程1-d3基础知识 文章目录 d3.js入门教程1-d3基础知识 1 HTML介绍 1.1 什么是HTML? 1.2 自定义文档样式CSS 1.3 构建svg图形 2 d3绘图入门 2 ...
- [OpenCV实战]36 使用OpenCV在视频中实现简单背景估计
目录 1 时间中值滤波 2 使用中值进行背景估计 3 帧差分 4 总结和代码 5 参考 许多计算机视觉应用中,硬件配置往往较低.在这种情况下,我们必须使用简单而有效的技术.在这篇文章中,我们将介绍一种 ...
- C# 10 Lambda 语法的改进
C# 10 包括了对 Lambda 表达式的处理方式的许多改进: Lambda 表达式可以具有自然类型,这使编译器可从 Lambda 表达式或方法组推断委托类型. 如果编译器无法推断返回类型,Lamb ...
- 【推荐】MySQL数据库设计SQL规范
1 命名规范 1.[强制]库名.表名.字段名必须使用小写字母并采用下划线分割,禁止拼音英文混用:(禁用-,-相当于运算符) 2.[建议]库名.表名.字段名在满足业务需求的条件下使用最小长度: 如inf ...
- Boost线程处理机制
采自文章:https://www.cnblogs.com/renyuan/p/6613638.html 大多数共享数据的线程均采用 boost::mutex mtx; boost::condition ...
- docker搭建maven私服(nexus3),整合springboot上传下载依赖
一.前言 我们在JavaWeb开发中必不可少的就是jar包管理-maven,在没有maven之前,都是自己手动下载jar包导入到项目中,非常的繁琐. maven出现之后,又迎来新的问题,对于仓库里人家 ...
- Apache 2.4 的下载与安装
1. 登录Apache官网 http://httpd.apache.org/download.cgi 2. 点击 Files for Microsoft Windows 3. 点击 ApacheHau ...
- 11月15日内容总结——软件开发架构、网络编程介绍和OSI七层协议介绍
目录 一.软件开发架构 1.什么是软件开发架构 2.软件开发架构 架构方式一:c/s架构 架构方式二:b/s架构 架构优劣势 二.架构总结 三.网络编程前戏 1.什么是网络编程 2.学习网络编程的目的 ...
- 浅谈JS词法环境
JavaScript 词法环境 本文主要讲解JS词法环境,我们将看到什么是词法环境,词法范围如何工作,函数内部的名称如何解析,内部属性,弄清楚词法环境利于我们理解闭包.让我们开始吧... 什么是词法环 ...