public class CenterLineTextView extends android.support.v7.widget.AppCompatTextView { private final Rect mBounds = new Rect(); private final Paint mPaint = new Paint(); private int mPadding; private int mStroke; public CenterLineTextView(Context context) { super(context); init(); } public CenterLineTextView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); init(); } public CenterLineTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } private void init() { if (isInEditMode()) { return; } setGravity(Gravity.CENTER); mStroke = getContext().getResources().getDimensionPixelSize(R.dimen.divider); mPadding = getContext().getResources().getDimensionPixelSize(R.dimen.login_or_padding); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); mPaint.setStrokeWidth(mStroke); mPaint.setColor(getPaint().getColor()); getPaint().getTextBounds(getText().toString(), 0, getText().length(), mBounds); canvas.drawLine(0, getHeight() / 2, (getWidth() - mBounds.right) / 2 - mPadding, getHeight() / 2, mPaint); canvas.drawLine(mPadding + (getWidth() + mBounds.right) / 2, getHeight() / 2, getWidth(), getHeight() / 2, mPaint); } }
source share