好久来这里了,分享一个demo源码。
使用场景
效果图

相信很多移动端开发者都很熟悉了,通常我们首先想到的就是使用 RelativeLayout 方式处理,例如:

<RelativeLayout
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:onClick="onClickToMain"
        >
        <ImageView
            android:layout_width="@dimen/icon_len"
            android:layout_height="@dimen/icon_len"
            android:src="@drawable/selector_icon_main"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="15dp"
            />
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/index"
            android:layout_alignParentBottom="true"
            android:gravity="center"
            android:layout_marginBottom="3dp"
            android:textColor="@color/selector_common_icon_text"
            android:textSize="@dimen/common_content_text_small"
            />
    </RelativeLayout>

我们写一个还好,当你重复写三个以上这样的控件时你可能一直在重复复制粘贴的动作,而且你的布局层次会变得复杂而冗长。相信有追求的猿猿都会想到自定义了,于是就出现了这个开源 demo。
简单使用1)SingleBar Style(根据需要指定右边带尖角)
效果图:

代码:

<com.blockmenu.liuguangli.blockmenuitem.BlockMenuItem
                android:layout_width="match_parent"
                android:background="@color/commonDivBgWhite"
                android:layout_marginTop="20dp"
                android:layout_height="62dp"
                app:mainIcon="@mipmap/icon_mine"
                app:IconMargin="15dp"
                app:mainIconSize="24dp"
                app:topBorder="0.5dp"
                app:bottomBorder="0.5dp"
                app:text="@string/butler"
                app:textSize="@dimen/common_content_text"
                app:textMargin="10dp"
                app:extendIcon="@mipmap/arrow_right_gray"
                />

这样是不是简洁多了。
2)BarGroup Style
效果图:

代码:

<com.blockmenu.liuguangli.blockmenuitem.BlockMenuItem
                android:layout_width="match_parent"
                android:background="@color/commonDivBgWhite"
                android:layout_marginTop="10dp"
                android:layout_height="62dp"
                app:mainIcon="@mipmap/icon_service"
                app:IconMargin="15dp"
                app:mainIconSize="24dp"
                app:topBorder="0.5dp"
                app:bottomBorder="0.5dp"
                app:text="@string/service"
                app:textSize="@dimen/common_content_text"
                app:textMargin="10dp"
                app:extendIcon="@mipmap/arrow_right_gray"
                app:bottomBorderStartFromText="true"
                />
  <com.blockmenu.liuguangli.blockmenuitem.BlockMenuItem
                android:layout_width="match_parent"
                android:background="@color/commonDivBgWhite"
                android:layout_height="62dp"
                app:mainIcon="@mipmap/icon_home"
                app:IconMargin="15dp"
                app:mainIconSize="24dp"
                app:bottomBorder="0.5dp"
                app:text="@string/shake_sopen_door"
                app:textSize="@dimen/common_content_text"
                app:textMargin="10dp"
                app:extendIcon="@mipmap/arrow_right_gray"
                />

简单吧,实际上就是两个SingleBar叠在一起,然后你指定一下边界框就行了(第一个 SingleBar 的下边框指定和文本对齐,第二个  SingleBar 不设置上边框)。

3)Block Style
效果图:

代码:

<com.blockmenu.liuguangli.blockmenuitem.BlockMenuItem
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        app:mainIcon="@mipmap/icon_butler_pressed"
                        app:IconMargin="15dp"
                        app:topBorder="2dp"
                        app:text="@string/butler"
                        app:textSize="@dimen/common_content_text"
                        app:textColor="@color/common"
                        app:extendIcon="@mipmap/arrow_right_gray"
                        app:textMargin="10dp"
                        app:mainIconSize="60dp"
                        app:vertical="true"
                        />

这个使用就更简单了,细心的你一定发现了,只需多设置一个属性:app:vertical="true",从儿实现来图标文本的纵向排列。

4) 没有了,下载源码使用吧。
主要介绍demo中自定义控件的使用,个人不喜欢上了就说一堆技术实现细节,先下载demo跑起来看看效果,再去研究实现细节,这比较符合人的认知逻辑。源码下载地址:https://github.com/liuguangli/BlockIconTextMenu
ps:作为码农,你如果还没有GitHub账号赶紧好好反省下吧。文章首发:http://www.liuguangli.win/archives/96

自定义控件-条状、块状菜单相关推荐

  1. 如何利用echarts图表获取条状图点击名称和值

    如何利用echarts图表获取条状图点击名称和值 听语音 | 浏览:1505 | 更新:2017-06-13 10:20 | 标签:软件 1 2 3 4 5 6 7 分步阅读 echarts图表插件工 ...

  2. Flex实现双轴条状图

    1.问题背景 一般的,柱状图能够实现双轴图,可是怎样实现双轴条状图? 2.实现实例 <? xml version="1.0" encoding="utf-8&quo ...

  3. 甘特图(别名:横道图、条状图)的画法

    简介: 甘特图(Gantt chart )又叫横道图.条状图(Bar chart).它是以图示的方式通过活动列表和时间刻度形象地表示出任何特定项目的活动顺序与持续时间.在处理多道批处理系统问题时,有时 ...

  4. 利用css绘制三条横线的菜单图标

    今天在慕课网上学习padding属性时,老师利用padding,border,backgroud-clip等属性轻易的使用一个div绘制出了三条横线的菜单图标,像下图这样 html代码很简单,就一句: ...

  5. 帝国cms 主导航条下拉菜单功能实现,模板功能扩展

    主导航条下拉菜单样式: 具体应用请查看我的个人网站:无知人生 实现步骤 1.在公共模板变量>页面头部模板中使用以下标签来加载菜单项 [listshowclass]'0',13,0,0[/list ...

  6. iOS 13细节曝光!苹果要把音量显示方式调整为条状

    下个月的WWDC 2019上,苹果就要推出他们的iOS 13系统了,而新系统上都会有哪些变化呢? 近日,外媒给出的最新报道称,苹果将对iOS 13的音量显示进行一些调整,具体来说就是,现在你调节设备音 ...

  7. js+html5 canvas全屏彩色条状海浪动画js特效

    下载地址 基于js+html5 canvas制作的一款好看的全屏彩色条状海浪动画特效. dd:

  8. 蓝桥杯 ADV-193 盾神与条状项链 (试题解析)

    试题 算法提高 盾神与条状项链 提交此题   评测记录 资源限制 时间限制:1.0s   内存限制:256.0MB 问题描述 有一天,盾神捡到了好多好多五颜六色的珠子!他心想这些珠子这么漂亮,可以做成 ...

  9. 2022年3月24日蜻蜓q旗舰版v1.2.2更新-详细的用户,内容,整体圆饼+树状+横条状统计展示功能

    2022年3月24日蜻蜓q旗舰版v1.2.2更新-详细的用户,内容,整体圆饼+树状+横条状统计展示功能 更新日志 ·增加用户统计,用户画像,区分男性女性,月度统计,年度统计,注册用户数统计. ·增加评 ...

  10. plot(matplotlib.pyplot)绘图(条状图)

    使用数据地址:链接:https://pan.baidu.com/s/1wXtZRDcM-JKk_dIDRyd_dg?pwd=pyth 提取码:pyth 提取一些数据,用来绘图用 import pand ...

最新文章

  1. 圆桌讨论:Cloud 2.0时代的工业互联网与智能制造
  2. 802.11协议之BA/BAR帧
  3. Ping命令检测网站运行状态
  4. mysql 删除顺序_mysql 添加字段、删除字段、调整字段顺序 转
  5. springboot 关闭懒加载_SpringBoot新手入门篇
  6. 网络知识:为什么你家里的网速慢,看完你就懂了?
  7. 埋点测试-移动端/PC端
  8. 5个让IT开发效率提高200%的工具,最后一个很实用,你用过几个
  9. SQL中replace函数
  10. HoRNet L3012 for Mac(贝斯低音效果器)v1.0特别版
  11. Windows Server 2003 来配置网络地址转换 (NAT
  12. 企业级 SpringBoot 教程 (七)springboot开启声明式事务
  13. 程序员100套简历模板,全网最全
  14. 基于Matlab的语音识别
  15. matlab相关系数的显著性检验
  16. Android 进阶技术汇总一: 个性化控件(View) 方案汇总
  17. ASP + SQL Server聊天室设计实例
  18. 贝塔自助授权系统php源码,贝塔自助授权系统v1.1
  19. 计算机 无法进入睡眠模式,Win10无法进入睡眠模式怎么办?电脑不能进入睡眠模式的解决方法...
  20. JAVA 构造方法、无参构造方法、有参构造方法、构造方法重载

热门文章

  1. 软考-信息系统项目管理师-流程管理
  2. CGLIB代理到底是个什么东西?这是一篇最全的CGLIB大全
  3. 基于用例点来度量软件规模并管理进度 之三
  4. 软件工程专业如何就业!
  5. 写脚本时遇到的一些问题+自己的一些简单总结[小白版]
  6. 计算机转型展望未来大发展,市计算机:披荆斩棘砥砺前行,勠力同心展望未来...
  7. java观察者模式在spring中的应用_利用spring自己实现观察者模式
  8. 百田公司:与神策数据携手,筑就爆款游戏背后的 4 个数据砝码
  9. 干货盘点:神策数据深度用户案例传送门
  10. mysql数据库怎么安装到自己的电脑上?