package com.parttime.widget; import android.annotation.TargetApi; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Paint; import android.os.Build; import android.util.AttributeSet; import android.widget.Button; import android.widget.TextView; import com.qingmu.jianzhidaren.R; /** * Created by cjz on 2015/7/16. */ public class FormButton extends TextView { private boolean initExecuted; private Context context; private boolean topLineShown = true; private boolean bottomLineShown = true; private int lineColor; private int lineWidth; private Paint paint; public FormButton(Context context) { super(context); if(!initExecuted){ initExecuted = true; init(context, null); } } public FormButton(Context context, AttributeSet attrs) { super(context, attrs); if(!initExecuted){ initExecuted = true; init(context, attrs); } } public FormButton(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); if(!initExecuted){ initExecuted = true; init(context, attrs); } } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public FormButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); if(!initExecuted){ initExecuted = true; init(context, attrs); } } private void init(Context context, AttributeSet attrs){ this.context = context; lineColor = context.getResources().getColor(R.color.divider_color); lineWidth = context.getResources().getDimensionPixelSize(R.dimen.divider_width); lineWidth = lineWidth < 1 ? 1 : lineWidth; paint = new Paint(); paint.setStrokeWidth(lineWidth); paint.setColor(lineColor); if(attrs != null){ TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.FormButton); if(typedArray != null){ topLineShown = typedArray.getBoolean(R.styleable.FormButton_fb_topLine_shown, topLineShown); bottomLineShown = typedArray.getBoolean(R.styleable.FormButton_fb_bottomLine_show, bottomLineShown); lineColor = typedArray.getColor(R.styleable.FormButton_fb_line_color, lineColor); } } } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); int measuredWidth = getMeasuredWidth(); int measuredHeight = getMeasuredHeight(); if(topLineShown) { canvas.drawLine(0, 0, measuredWidth, 0, paint); } if(bottomLineShown) { canvas.drawLine(0, measuredHeight, measuredWidth, measuredHeight, paint); } } }