一个可以自由定制外观、支持拖拽消除的MaterialDesign风格Android BadgeView
一些特性
1.随意定制外观,包括Badge位置、底色、边框、阴影、文字颜色(支持透明色)、大小、内外边距等
2.Badge数字小于0时显示dot,等于0时隐藏整个Badge,在普通模式下超过99时显示99+,精确模式下显示具体值
3.支持设置文本内容
4.支持设置图片背景
5.支持类似QQ的拖拽消除效果(默认关闭)
6.支持以动画的方式隐藏Badge
使用方法
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也要设置隐藏不然会出现隐藏部分空白。
以上是本人使用中遇到的问题,如果你在使用中遇到问题还有交流。