
demo.png
一个可以自由定制外观、支持拖拽消除的MaterialDesign风格Android BadgeView
一些特性
1.随意定制外观,包括Badge位置、底色、边框、阴影、文字颜色(支持透明色)、大小、内外边距等
2.Badge数字小于0时显示dot,等于0时隐藏整个Badge,在普通模式下超过99时显示99+,精确模式下显示具体值
3.支持设置文本内容
4.支持设置图片背景
5.支持类似QQ的拖拽消除效果(默认关闭)
6.支持以动画的方式隐藏Badge

demo_gif.gif
使用方法
implementation 'q.rorbin:badgeview:1.1.3'
new QBadgeView(context).bindTarget(textview).setBadgeNumber(5);
| 相关方法 | 说 明 |
|---|---|
| setBadgeNumber | 设置Badge数字 |
| setBadgeText | 设置Badge文本 |
| setBadgeTextSize | 设置文本字体大小 |
| setBadgeTextColor | 设置文本颜色 |
| setExactMode | 设置是否显示精确模式数值 |
| setBadgeGravity | 设置Badge相对于TargetView的位置 |
| setGravityOffset | 设置外边距 |
| setBadgePadding | 设置内边距 |
| setBadgeBackgroundColor | 设置背景色 |
| setBadgeBackground | 设置背景图片 |
| setShowShadow | 设置是否显示阴影 |
| setOnDragStateChangedListener | 打开拖拽消除模式并设置监听 |
| stroke | 描边 |
| hide | 隐藏Badge |
在ListView或者RecyclerView中使用
可参考demo中ListViewActivity、RecyclerViewActivity
一些注意事项
- 请不要在xml中创建Badge
- Badge和TargetView绑定是采用替换TargetView的Parent方式实现的,同时将Parent的Id和TargetView的Id设置成一样来保证不会在RelativeLayout中出现位置错乱问题,所以在bindTarget后再次使用findViewById(TargetViewId)得到的会是Parent而不是TargetView,此时建议使用Badge.getTargetView方法来获取TargetView,如果您有更好的解决方式并愿意和我分享,请在Issues中提交给我或者给我发邮件,谢谢。
BUG总结
本人在使用过程中遇到的一些坑:
1.在使用bindTarget时,最好不要绑定到一些RadioButton等按钮上,可在按钮边添加TextView(这个根据自己情况),因为可能出现按钮不能点击的情况。
2.如果绑定的View存在GONE隐藏的情况,Badge也要设置隐藏不然会出现隐藏部分空白。
以上是本人使用中遇到的问题,如果你在使用中遇到问题还有交流。
