我如何在android中绘制REAL虚线

时间:2013-10-08 11:17:32

标签: android xamarin.android xamarin draw

我正在尝试绘制虚线作为ListView分隔符项的分隔符,如下所示: enter image description here

为了做到这一点,在其中一个案例中,我覆盖了OnDraw()方法并使用了:

paint.SetPathEffect(new DashPathEffect(new[] { 2f, 2f }, 0));

_paint.StrokeWidth = 2;

使用DashPathEffect dows绘制小点 - 但它们不是点 - 它们是小方块而不是圆点:

enter image description here

该应用程序是使用Xamarin框架上的monodroid构建的

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

设置画颜

 mPaint.setStyle(Paint.Style.STROKE);
 mPaint.setStrokeWidth(30);
 mPaint.setPathEffect(new DashPathEffect(new float[]{1, 60}, 0f));
 mPaint.setStrokeCap(Paint.Cap.ROUND);

使用示例

canvas.drawPath(mPath, mPaint);

<强>更新

还有另一种方式。在这里你可以设置绝对任何形状

    paintBlue = new Paint(Paint.ANTI_ALIAS_FLAG);
    float mRadius = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, context.getResources().getDisplayMetrics());
    paintBlue.setStyle(Paint.Style.STROKE);
    paintBlue.setAntiAlias(true);
    paintBlue.setColor(Color.BLACK);
    paintBlue.setStrokeWidth(12);
    Path shapePath = new Path();
    shapePath.addCircle(0, 0, mRadius, Path.Direction.CCW);
    PathDashPathEffect pathDashPathEffect = new PathDashPathEffect(shapePath, mRadius * 4, 0, PathDashPathEffect.Style.ROTATE);
    paintBlue.setPathEffect(pathDashPathEffect);

答案 1 :(得分:1)

如果您在API级别&gt; = 11的设备上进行测试,请尝试setting layer typeLAYER_TYPE_SOFTWARE