Android 自定义视图 canvas

Android custom view with canvas

我想使用 canvas 在 android 中创建自定义项目符号点。

以下是我的代码。

protected void onDraw(Canvas canvas) {
            // TODO Auto-generated method stub
            super.onDraw(canvas);
            int x = getWidth();
            int y = getHeight();
            int radius;
            radius = 100;
            Paint paint = new Paint();
            paint.setStyle(Paint.Style.FILL);
            paint.setColor(Color.WHITE);
            canvas.drawPaint(paint);
            // Use Color.parseColor to define HTML colors
            paint.setColor(Color.parseColor("#CD5C5C"));
            canvas.drawCircle(x / 2, y / 2, radius, paint);
        }

但它并没有产生我试图获得的视图。我附上一张图片作为参考。我希望得到这样的观点。

我认为在这种情况下出了什么问题是您获取宽度和高度以在中心绘制圆圈,请尝试像这样获取父视图的宽度和高度:

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
   int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
   int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
   this.setMeasuredDimension(parentWidth/2, parentHeight);
   this.setLayoutParams(new *ParentLayoutType*.LayoutParams(parentWidth/2,parentHeight));
}

并采用这些值来对齐您的圆圈, 如果这是你的问题,请告诉我。