BadgeView的使用

BadgeView是GitHub上的一个开源的第三方控件,用以实现类似微信、QQ等新消息提醒,在控件的右上角显示带数字的图标。这是我接触这个控件的初始目的,但在使用的过程中发现他很强大,用一句话来总结其强大之处就是,凡是需要在一个View控件上添加另一View控件的情况,都可以考虑他。但也有一些细节上的注意事项,让我很头疼。
首先,BadgeView包的下载地址:https://github.com/stefanjauker/BadgeView。也可以在CSDN上下载到。
一、属性介绍
1. 他的强大在于,他不仅可以添加数字,也可以添加文本文字,因为他继承自TextView,本质上就是一个TextView,所以TextView能有的效果在这里都有,类似“新消息”、“New”等等都可以用它来实现。注意,如果是数字的话,要写成String型而不是int型,也就是badgeview.setText(“”+5)。
2. 他的强大还在于,其位置也不局限于右上角,可以在目标控件的左上、左下、右上、右下、中间五个位置。控制位置的属性是
badgeview.setBadgePosition(BadgeView.POSITION_TOP_RIGHT);
3. BadgeView默认背景颜色为红色,也就是我们在微信中看到的那样,但也可以更改,属性值是setBadgeBackgroundColor。
二、注意事项
1. 添加BadgeView后目标控件无法显示

在使用的时候,我遇到了,添加BadgeView之后目标控件无法显示而BadgeView正常显示的情况,我的目标控件是ImageView,本来以为是ImageView的问题,但又试了几个与这个ImageView相关的TextView、Linearlayout,发现这三种View都无法显示目标控件,又尝试了将ImageView类型改成View类型,结果仍然是无法显示目标控件。(这种尝试的出发点是想到,在实现OnClickLinear借口时如果既有TextView又有Button类型时,会报错,应该统一成Button或者View)。我认为是BadgeView写的有问题,又在其他页面的View中尝试了一下,发现完全是正确显示的,说明我的badgeView是没有问题的。所以我认为是由于位置的原因,我的这个ImageView附近的控件都不能实现。由于代码太多,我便将相关代码放到了另一个Activity中进行修改。在另一个Activity中刚开始也有这个问题,后来我观察了我的xml文件,发现,这几个有问题的控件,我在layout_height或者是layout_width中写了0dp,因为用的是权重weight来控制显示比例的,在某本书上学到可以直接写0dp。之后我将0dp修改为match_parent后,问题迎刃而解,原来根源在这里。后来我想了下,应该是0dp导致目标控件显示空间没有了,因为期间我还尝试在各控件中加上颜色来区别到底是哪里出了问题,事实上通过颜色显示可以看出,当layout_height或者layout_width为0dp时,整个目标空间是消失的,而BadgeView 显示在目标空间的下一层。至此,问题解决。总结一句话就是,layout_height和layout_width不能是0dp。

附上源代码:

BadgeView badgeview = new BadgeView(MainActivity.this,target);
badgeview.setText(""+count);
badgeview.setTextSize(8.5f); 
badgeview.setBadgePosition(BadgeView.POSITION_TOP_RIGHT);
badgeview.setTextColor(Color.WHITE);
badgeview.show();

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值