开源项目——带图标文字的底部导航栏IconTabPageIndicator

简介: 接下来的博客计划是,在《Android官方技术文档翻译》之间会发一些Android开源项目的介绍,直接剩下的几篇Android技术文档发完,然后就是Android开源项目和Gradle翻译了。当然,其他的文章笔记也会偶尔发一下。

接下来的博客计划是,在《Android官方技术文档翻译》之间会发一些Android开源项目的介绍,直接剩下的几篇Android技术文档发完,然后就是Android开源项目和Gradle翻译了。当然,其他的文章笔记也会偶尔发一下。

本文原创,转载请注明在CSDN上的出处:

http://blog.csdn.net/maosidiaoxian/article/details/42638245

简介

本篇文章介绍的是一个底部导航栏,叫IconTabPageIndicator,一个带图标文字的导航栏。项目地址:https://github.com/msdx/IconTabPageIndicator

实际上,这个项目才三个类,而且也只完成了这一种导航栏。该项目参考了JakeWharton大神两年前的项目ViewPagerIndicator的实现,基于其中的一种导航做了修改,而实现这种图标文字的导航栏,且可以设定图标或文字的大小,不用担心过大的图标把文字顶出去或把导航给撑肥。

为什么我会知道得这么清楚呢?因为这个就是我写的,哈哈。

使用方法

Eclipse用户就自己去下载项目,然后把资源和代码拷进项目吧。
Android Studio的就很简单了,只要在你根项目的build.gradle中添加jcenter声明(已添加的而不必再添加):
    repositories {
        jcenter()
    }

接着在app模块的build.gradle中添加依赖:
    compile 'com.githang:iconpagerindicator:1.2'

然后就可以开始使用了。
使用方法和JakeWharton大神的ViewPagerIndicator完全一样,如果不明白,可以参考项目里面的app模块的代码,那里就是一个完整的demo。
这里说一下如何自定义图标的大小。

自定义图标大小

由于Android手机有着各种分辨率的屏幕大小,一般我们都不是用设计师给的图片大小就直接显示,都会对显示的图片宽高设置一个dp的值。所以在这里我也定义了两个属性,用来设置这个图标的宽和高。具体使用方法是,先在你的style.xml的app主题中指定一个“tabView”的style,然后再在这个style中指定两个属性的值,一个是“iconWidth”,一个是“iconHeight”的值。代码如下:
   <style name="AppTheme" parent="Theme.AppCompat.Light">
        <item name="tabView">@style/MyTabView</item>
    </style>

    <style name="MyTabView" parent="TabView">
        <item name="iconWidth">28dp</item>
        <item name="iconHeight">28dp</item>
    </style>

看一下效果图:


目录
相关文章
|
存储 Python
03-Locust-命令行运行及参数说明
03-Locust-命令行运行及参数说明
|
SQL 缓存 Java
Mybatis-plus缓存机制
MyBatis-Plus(简称MP)是一个基于MyBatis的增强工具,提供了更便捷的CRUD操作和其他功能。与MyBatis相比,MyBatis-Plus并没有引入自己的缓存机制,而是直接使用了MyBatis的缓存机制。 在MyBatis中,缓存分为一级缓存和二级缓存。 1. 一级缓存:一级缓存是SqlSession级别的缓存,它默认是开启的。当查询操作执行时,查询的结果会被缓存在SqlSession的内部数据结构中。如果后续再次执行相同的查询,MyBatis会先检查一级缓存中是否存在结果,如果存在则直接返回缓存的结果,而不会再次执行SQL语句。一级缓存的生命周期与SqlSession相同,
1464 0
|
6月前
|
搜索推荐 Shell
bpmn-js打造最强flowable流程设计器
在企业系统中,流程引擎至关重要。Flowable虽强大,但默认设计器功能有限。本文基于 bpmn-js 打造增强版 Flowable 设计器,支持丰富自定义属性与后端联动。bpmn-js 优势明显:原生支持 BPMN 2.0、可扩展性强、社区活跃。节点涵盖多种事件、任务、网关等,满足复杂业务需求。示例效果可见在线预览。
|
云安全 数据采集 机器学习/深度学习
云安全 | 学习笔记
快速学习云安全,重点介绍了如何在 Linux 下进行安全防护,并从用户系统安全、SSH 安全、恶意文件安全和云安全四个角度诠释如何提升系统的安全性。
云安全 | 学习笔记
|
域名解析 弹性计算 应用服务中间件
玩转Linux系统【五】安装Nginx搭建网站
Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 在高连接并发的情况下,Nginx是Apache服务器不错的替代品。
604 0
玩转Linux系统【五】安装Nginx搭建网站
|
新零售 安全 Linux
阿里巴巴正式开源自研容器技术Pouch
阿里巴巴正式开源了基于Apache 2.0协议的容器技术Pouch。Pouch是一款轻量级的容器技术,拥有快速高效、可移植性高、资源占用少等特性,主要帮助阿里更快的做到内部业务的交付,同时提高超大规模下数据中心的物理资源利用率。
7956 1
|
监控 网络协议 算法
TCP 拥塞控制详解 | 6. 主动队列管理
TCP 拥塞控制详解 | 6. 主动队列管理
742 1
TCP 拥塞控制详解 | 6. 主动队列管理
|
数据采集 Web App开发 存储
Python爬虫:常用的爬虫工具汇总
Python爬虫:常用的爬虫工具汇总
2095 0
Python爬虫:常用的爬虫工具汇总
|
前端开发
css 自定义 ol/li 序号样式
css 自定义 ol/li 序号样式
922 0
css 自定义 ol/li 序号样式
|
缓存 JavaScript 前端开发
Vue 3.0 性能提升主要是通过哪几个方面体现的?
这篇文章你将了解 Vue 3.0 性能优化的三个方法: • 源码体积优化 • 数据劫持优化 • 编译优化
502 0