我正在尝试为Android开发一个简单的饼图类。现在,它可以获取标签和值的映射并绘制饼图。我还没有添加馅饼的图例,这是我需要将文本放在屏幕角落的小矩形附近的地方。任何帮助表示感谢,因为我是Android开发人员的新手。
答案 0 :(得分:51)
您必须使用Canvas类的drawText方法。
Paint paint = new Paint();
canvas.drawPaint(paint);
paint.setColor(Color.BLACK);
paint.setTextSize(16);
canvas.drawText("My Text", x, y, paint);
以下是相关文档:
答案 1 :(得分:8)
这里曾经有另一个被删除的答案,因为它只是一个链接。原始链接为here。代码基本相同,但我拿出了非文本绘图部分,并且还扩大了尺寸,以便在现代屏幕密度上更好地工作。
这只是展示了一些你可以用文字绘图做的事情。
以下是更新后的代码:
@PublishedApi internal
我想稍后尝试的其他内容是drawing text along a path。
另请参阅this fuller answer here,其中包含以下图像。
答案 2 :(得分:1)
在画布上绘制文本的另一种(可以说是更好的)方法是使用StaticLayout
。这可以在需要时处理多行文本。
String text = "This is some text.";
TextPaint textPaint = new TextPaint();
textPaint.setAntiAlias(true);
textPaint.setTextSize(16 * getResources().getDisplayMetrics().density);
textPaint.setColor(0xFF000000);
int width = (int) textPaint.measureText(text);
StaticLayout staticLayout = new StaticLayout(text, textPaint, (int) width, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0, false);
staticLayout.draw(canvas);
TextPaint
和StaticLayout
在被用于说明之前就被实例化了。但是,在onDraw
中这样做会损害性能。 Here is a better example在自定义视图的上下文中显示它们,这些视图会绘制自己的文本。