2

我使用画布的 drawText 方法制作了一个自定义视图。不知何故,任何 Jelly Bean 设备上都没有显示任何文本。它适用于 ICS 及以下版本。

有谁知道这个方法或任何相关方法的 API 15 到 16 是否有任何变化?

编辑代码:(来自提供画布作为参数的draw方法)

    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);

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

4

1 回答 1

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,它在我刚刚测试的两个不同密度的设备上就像一个魅力上。

(PS如果我错了或确认,任何熟悉Android OS内部的人都可以纠正我吗?)

于 2012-08-25T18:16:07.657 回答