Android自定义带未读信息红点TextView

public class RedPointTextView extends TextView {
private static final int DEFAULT_MIN_SIZE_DIP = 18; //最小尺寸
private static final int DEFAULT_TB_PADDING_DIP = 3; //上下边距
private static final int DEFAULT_LR_PADDING_DIP = 6; //左右边距
private static final int DEFAULT_TEXT_SIZE = 11; //dp
private static final int DEFAULT_TEXT_COLOR = Color.WHITE;
private int mLeftPadding;
private int mTopPadding;
private int mMinSize;

public RedPointTextView(Context context) {
    super(context);
    init();
}

public RedPointTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
}

public RedPointTextView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    init();
}

private void init() {
    mLeftPadding = dipToPixels(DEFAULT_LR_PADDING_DIP);
    mTopPadding = dipToPixels(DEFAULT_TB_PADDING_DIP);
    mMinSize = dipToPixels(DEFAULT_MIN_SIZE_DIP);

    setIncludeFontPadding(false);
    setGravity(Gravity.CENTER);
    setMinWidth(mMinSize);
    setMinHeight(mMinSize);
    setTextColor(DEFAULT_TEXT_COLOR);
    setTextSize(TypedValue.COMPLEX_UNIT_DIP, DEFAULT_TEXT_SIZE);
    setBackgroundResource(R.drawable.shape_oval_pink);
    setVisibility(View.GONE);
}

private int dipToPixels(int dip) {
    return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, getResources().getDisplayMetrics());
}

public void setUnreadCount(int count) {
    if (count <= 0) {
        setVisibility(GONE);
    } else {
        setVisibility(GONE);
        if (count < 10) {
            setPadding(0, 0, 0, 0);
        } else {
            setPadding(mLeftPadding, mTopPadding, mLeftPadding, mTopPadding);
        }
        if (count > 99) {
            setText("99+");
        } else {
            setText(String.valueOf(count));
        }
    }
}

}

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。更多免费资源在http://www.gitweixin.com/?p=2627

发表评论

邮箱地址不会被公开。 必填项已用*标注