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);
Android 控件右上角角标的实现方案_第1张图片 setCompoundDrawbles实现效果

这种方式不适用ImageView控件,而且效果不是很好。

二、通过布局实现

1.定义右上角形状



    
    
    

 2.布局




    

    


Android 控件右上角角标的实现方案_第2张图片 布局实现效果

这种方式图片也适用,但是如果要实现拖拽消失功能需要定义动画。

三、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);
        }
    }
});
Android 控件右上角角标的实现方案_第3张图片 Badge实现效果

还有拖拽的动画效果没有录,本人比较懒。这种方式对任何控件都适用,个人也推荐这种实现方式。

 

以上是本次分享,如有不对之处,烦请指正。分享不易,如解决您的问题,麻烦点个赞,谢谢!

你可能感兴趣的:(Android)