Android 控件右上角角标的实现方案
很多项目中都会用到控件的角标,以达到提示作用,如未读信息,剩余量等等,那么如何实现呢?这篇文章将三种方式进行实现,大家按需选择。
一、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);
这种方式不适用ImageView控件,而且效果不是很好。
二、通过布局实现
1.定义右上角形状
2.布局
这种方式图片也适用,但是如果要实现拖拽消失功能需要定义动画。
三、BadgeView
方法说明
| code | 说明 |
| setBadgeNumber | 设置Badge数字 |
| setBadgeText | 设置Badge文本 |
| setBadgeTextSize | 设置文本字体大小 |
| setBadgeTextColor | 设置文本颜色 |
| setExactMode | 设置是否显示精确模式数值 |
| setBadgeGravity | 设置Badge相对于TargetView的位置 |
| setGravityOffset | 设置外边距 |
| setBadgePadding | 设置内边距 |
| setBadgeBackgroundColor | 设置背景色 |
| setBadgeBackground | 设置背景图片 |
| setShowShadow | 设置是否显示阴影 |
| setOnDragStateChangedListener | 打开拖拽消除模式并设置监听 |
| stroke | 描边 |
| hide | 隐藏Badg |
1.gradle引入
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() {@Overridepublic void onDragStateChanged(int dragState, Badge badge, View targetView) {if (STATE_SUCCEED == dragState){badge.hide(true);}}
});
还有拖拽的动画效果没有录,本人比较懒。这种方式对任何控件都适用,个人也推荐这种实现方式。
以上是本次分享,如有不对之处,烦请指正。分享不易,如解决您的问题,麻烦点个赞,谢谢!
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
