记录一下底部选项卡的实现,很常见的代码,大神勿嘲笑。

说一下思路,在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底部选项卡实现的更多相关文章

  1. FragmentTabHostBottomDemo【FragmentTabHost + Fragment实现底部选项卡】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 使用FragmentTabHost实现底部选项卡效果. 备注:该Demo主要是演示FragmentTabHost的一些设置和部分功能 ...

  2. Android应用底部导航栏(选项卡)实例

    现在很多android的应用都采用底部导航栏的功能,这样可以使得用户在使用过程中随意切换不同的页面,现在我采用TabHost组件来自定义一个底部的导航栏的功能. 我们先看下该demo实例的框架图: 其 ...

  3. Fragment实现底部选项卡切换效果

    现在很多APP的样式都是底部选项卡做为首页的,实现这样的效果,我们一般有这样几种方式,第一,最屌丝的做法,我直接自定义选项卡视图,通过监听选项卡视图,逻辑控制内容页的切换,这样做的想法一般是反正这几个 ...

  4. TabBottomFragmentLayout【自定义底部选项卡区域(搭配Fragment)】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 自定义底部选项卡布局LinearLayout类,然后配合Fragment,实现切换Fragment功能. 缺点: 1.底部选项卡区域 ...

  5. TabLayoutBottomDemo【TabLayout实现底部选项卡】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 使用TabLayout实现底部选项卡切换功能. 效果图 代码分析 1.演示固定模式的展现 2.演示自定义布局的实现 使用步骤 一.项 ...

  6. MUI框架开发HTML5手机APP(二)--页面跳转传值&底部选项卡切换

      概 述 JRedu 在上一篇博客中,我们学习了如何使用Hbuilder创建一个APP,同时如何使用MUI搭建属于自己的第一款APP,没有学习的同学可以戳链接学习: http://www.cnblo ...

  7. MUI框架-12-使用原生底部选项卡(凸出图标案例)

    MUI框架-12-使用原生底部选项卡(凸出图标案例) 今天,用 mui 做 app 时,遇到了可能各位都遇到过的头疼问题:底部中间图标凸起,如下图: 最后有源代码 [提示]:有人问我在 HBuilde ...

  8. Android 修改底部导航栏navigationbar的颜色

    Android 修改底部导航栏navigationbar的颜色 getWindow().setNavigationBarColor(Color.BLUE); //写法一 getWindow().set ...

  9. HTML5 开发APP(头部和底部选项卡)

    我们开发app有一定固定的样式,比如头部和底部选项卡部分就是公共部分就比如我在做的app进来的主页面就像图片显示的那样 我们该怎么实现呢,实现我们应该建一个主页面index.html,然后建五个子页面 ...

  10. Android自定义底部带有动画的Dialog

    Android自定义底部带有动画的Dialog 效果图 先看效果图,是不是你想要的呢 自定义Dialog package --.view; import android.app.Dialog; imp ...

随机推荐

  1. prometheus-添加监控linux服务器

    1. prometheus-添加监控linux服务器 prometheus添加监控linux服务器 node_exporter:用于监控Linux系统的指标采集器. 常用指标: CPU 内存 硬盘 网 ...

  2. C#开发的插件程序 - 开源研究系列文章

    上次编写了一个家庭小助手的小工具软件,也对其中的线程池及管理器进行了介绍(见博文:C#开发的线程池和管理器 - 开源研究系列文章),这次把里面的插件部分的功能单独放出来进行介绍,让更多的朋友能够进行学 ...

  3. 使用“宝塔一键迁移”工具,将typecho博客迁移到京东云cvm云主机

    作者:京东科技 林中 服务器更换.网站搬家,对于很多开发者新手来说不是一件容易的事情,需要迁移网站程序.数据库,修改数据库连接文件等.在云迁移方案中,宝塔是非常简单好用的服务器运维面板,能够极大提升运 ...

  4. 把KMP算法嚼碎了喂给你吃!(C++)

    相信不少人在学数据结构的时候都被KMP算法搞的迷迷糊糊的,原理看的似懂非懂,代码写不出来,或者写出来了也不知道为什么就可以这么写.本文力求尽可能通俗详细的讲解KMP算法,让你不再受到KMP算法的困扰. ...

  5. vscode快速删除空白行方法

    1.快速打开替换界面,在Find界面输入^\s*(?=\r?$)\n 2.Alt+R选择Use Regular Expression(Alt+R)即正则表达式模式: 3.选择Replace All(C ...

  6. Docker快速部署Nacos

    前置 机器配置不能太低 ( 2c2g的轻量服务器直接崩掉了) Docker https://www.docker.com/ 开始安装 mysql 使用docker安装mysql (推荐8.0) 可以不 ...

  7. springcloud与微服务

    springcloud 与 微服务 父工程(按需导入依赖) <!--打包--> <packaging>pom</packaging> <properties& ...

  8. 局部内部类定义-局部内部类的final问题

    局部内部类定义 定义格式: 修饰符 class 外部类名称 { 修饰符 返回值类型 外部类方法名(参数列表){ class 局部内部类名称{// ... } } } 小杰一下类的权限修饰符: publ ...

  9. 【学习笔记】QT从入门到实战完整版(Lambda)(2)

    Lambda Lambda 表达式很有意思,相信很多人初次见到 Lambda 表达式都会不能理解有什么用,我也一样,看了视频教程之后,突然意识到,Lambda 真的是太好用了,它可以在某些情况下可以很 ...

  10. 服务器搭建(CenOS 7 Apache + PHP _Mysql环境(LAMP))

    服务器搭建(CenOS 7 Apache + PHP _Mysql环境(LAMP)) 第一步.更换阿里云 yum源 curl -o /etc/yum.repos.d/CentOS-Base.repo  ...