2012-09-13 68 views
2

我指的是这个链接:How do I make a dotted/dashed line in Android?,并使用DashPathEffect。但是这对我不起作用?为什么?我的代码:android,如何在edittext中绘制虚线

public class NoteEditText extends EditText { 
    private Paint mPaint; 

    public NoteEditText(Context context) { 
     super(context); 
    } 

    public NoteEditText(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     mPaint = new Paint(); 
     mPaint.setStrokeWidth(1); 
     mPaint.setStyle(Paint.Style.FILL_AND_STROKE); 
     mPaint.setColor(Color.DKGRAY); 
     PathEffect effects = new DashPathEffect(new float[]{5,5,5,5},1); 
     mPaint.setPathEffect(effects); 
    } 

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

     int height = this.getHeight(); 
     int lineHeight = this.getLineHeight(); 
     int lineNum = height/lineHeight; 
     L.l("line count: " + lineNum); 
     for (int i = 0; i < lineNum; i++) { 
      int y = (i + 1) * lineHeight; 
      canvas.drawLine(0, y, this.getWidth() - 1, y, mPaint); 
     } 
    } 
} 

回答

0

这应该工作。

EditText editText =(EditText)v.findViewById(android.R.id.text1);

editText.setPaintFlags(editText.getPaintFlags()| Paint.STRIKE_THRU_TEXT_FLAG);

1
new float[]{5,5,5,5} 

尝试

new float[]{5,10,15,20} 
0

我不认为你应该使用 “for循环” 画line.set setStrokeWidth($直径)可能是有用的。我写了一个支持此功能的简单视图,详细信息Here