Android Canvas drawText不能正常工作

时间:2012-08-25 07:22:41

标签: android android-canvas

我使用canvas的drawText方法创建了一个自定义视图。不知怎的,任何Jelly Bean设备上都没有显示任何文字。它适用于ICS及以下。

有没有人知道此方法或任何相关方法的API 15到16是否有任何变化?

编辑代码:(来自draw方法,其中canvas作为参数提供)

    paint = new Paint();
    paint.setAntiAlias(true);
    paint.setStrokeWidth(3);
    paint.setColor(context.getResources().getColor(R.color.plot_background));
    canvas.drawRect(new Rect(0,0,getWidth(),getHeight()), paint);
    paint.setColor(color_text);
    paint.setTextSize(getScaled(18.5f));
    paint.setTextAlign(Align.CENTER);
    canvas.drawText(title, (graphwidth / 2) + horstart, border/2+15, paint);

我知道该行已执行且坐标正确,因为相同的代码适用于较旧的平台。

1 个答案:

答案 0 :(得分:4)

谢谢埃里克。找出错误。我在canvas.getDensity()上扩展应用程序中的所有内容。 getDensity()目前,由于某种原因,绘图功能总是为果酱豆设备0。但它确实为1.6 - >之间的任何值返回正确的值。 4.0.3

我没有发布代码(这是我的错)是因为我没有怀疑getDensity()是问题,因为它在应用程序进入市场的过去两年中从未做过。

解决方法是修改getScaled函数。

public float getScaled(Canvas canvas,float in){
    return in * ( canvas.getDensity()==0 ? 1 : canvas.getDensity()/ 160.0f);
} 

文档确实说可以返回DENSITY_NONE,但我认为可能发生的是Jelly Bean为你做缩放,因为如果我只是将它乘以1,它就可以作为两个不同密度设备的魅力我刚刚测试过。

(P.S。任何熟悉Android操作系统内部的人都能纠正我,如果我错了或确认了吗?)