@Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        // Draw Title Text
        if (isShowTitle() && mTitlePaint != null && mCurTitleProperty != null && mCurTitleProperty.mAlpha != 0) {
            CharSequence buf = getHint();
            if (buf != null) {
                int color = getCurrentHintTextColor();
                int alpha = Ui.modulateAlpha(Color.alpha(color), mCurTitleProperty.mAlpha);

                if (color != 0 && alpha != 0 && mCurTitleProperty.mTextSize > 0) {
                    mTitlePaint.setTextSize(mCurTitleProperty.mTextSize);
                    mTitlePaint.setColor(color);
                    mTitlePaint.setAlpha(alpha);

                    final int scrollX = getScrollX();
                    final int scrollY = getScrollY();
                    if ((scrollX | scrollY) == 0) {
                        canvas.drawText(buf, 0, buf.length(),
                                mCurTitleProperty.mLeft,
                                mCurTitleProperty.mTop + mCurTitleProperty.mTextSize,
                                mTitlePaint);
                    } else {
                        canvas.translate(scrollX, scrollY);
                        canvas.drawText(buf, 0, buf.length(),
                                mCurTitleProperty.mLeft,
                                mCurTitleProperty.mTop + mCurTitleProperty.mTextSize,
                                mTitlePaint);
                        canvas.translate(-scrollX, -scrollY);
                    }
                }
            }
        }
    }
Check show hint title

@param s          The text, if the have same string we should move hint
@param skipChange on showed we not refresh ui, but skipChange=true,
                  we can skip the check
caprice/ui/src/main/java/net/qiujuer/genius/ui/widget/EditText.java