Android(安卓)控件右上角角标的实现方案
16lz
2021-01-25
很多项目中都会用到控件的角标,以达到提示作用,如未读信息,剩余量等等,那么如何实现呢?这篇文章将三种方式进行实现,大家按需选择。
一、setCompoundDrawbles
textView = findViewById(R.id.message_tint);Drawable drawable = getDrawable(R.drawable.red_bubble_bg);drawable.setBounds(0,0, 16,16);textView.setCompoundDrawables(null,null, drawable, null);
setCompoundDrawbles实现效果 这种方式不适用ImageView控件,而且效果不是很好。
二、通过布局实现
1.定义右上角形状
<?xml version="1.0" encoding="utf-8"?>
2.布局
<?xml version="1.0" encoding="utf-8"?>
布局实现效果 这种方式图片也适用,但是如果要实现拖拽消失功能需要定义动画。
三、BadgeView
方法说明
code | 说明 |
setBadgeNumber | 设置Badge数字 |
setBadgeText | 设置Badge文本 |
setBadgeTextSize | 设置文本字体大小 |
setBadgeTextColor | 设置文本颜色 |
setExactMode | 设置是否显示精确模式数值 |
setBadgeGravity | 设置Badge相对于TargetView的位置 |
setGravityOffset | 设置外边距 |
setBadgePadding | 设置内边距 |
setBadgeBackgroundColor | 设置背景色 |
setBadgeBackground | 设置背景图片 |
setShowShadow | 设置是否显示阴影 |
setOnDragStateChangedListener | 打开拖拽消除模式并设置监听 |
stroke | 描边 |
hide | 隐藏Badg |
1.gradle引入
api 'q.rorbin:badgeview:1.1.3'
2.代码实现
textView = findViewById(R.id.message_tint);QBadgeView qBadgeView = new QBadgeView(this); qBadgeView.setBadgeBackgroundColor(Color.RED);qBadgeView.bindTarget(textView);qBadgeView.setBadgeText("99+");qBadgeView.setBadgeGravity(Gravity.END|Gravity.TOP);qBadgeView.setGravityOffset(1, true);qBadgeView.setBadgeTextSize(8, true);qBadgeView.setBadgePadding(5, true);qBadgeView.setOnDragStateChangedListener(new Badge.OnDragStateChangedListener() { @Override public void onDragStateChanged(int dragState, Badge badge, View targetView) { if (STATE_SUCCEED == dragState){ badge.hide(true); } }});
Badge实现效果 还有拖拽的动画效果没有录,本人比较懒。这种方式对任何控件都适用,个人也推荐这种实现方式。
以上是本次分享,如有不对之处,烦请指正。分享不易,如解决您的问题,麻烦点个赞,谢谢!
更多相关文章
- GitHub 标星 2.5K+!教你通过玩游戏的方式学习 VIM!
- android 自定义下拉刷新上拉加载控件(SwipeRefreshLayout + recyc
- 在android浏览器中如果安装了app,则打开app,如果没有则跳转到应用
- Android(安卓)APP 应用分析
- Android的PoupWindow简单使用实例(附Demo)
- Flutter吸附效果
- Ubuntu Android(安卓)Studio快捷方式创建
- Android图像滤镜框架GPUImage使用(二)
- 自己实现个Android下仿IOS的时间选择器、时间控件Time-Selector