Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android drawText在棒棒糖上缺少字符_Android_Android 5.0 Lollipop_Drawtext - Fatal编程技术网

Android drawText在棒棒糖上缺少字符

Android drawText在棒棒糖上缺少字符,android,android-5.0-lollipop,drawtext,Android,Android 5.0 Lollipop,Drawtext,我有一个android应用程序,它显示一个比例,在5.0(棒棒糖)之前的所有版本上都运行良好,在5.0版本中,使用drawText方法绘制的所有文本都会被截断。 仅显示两个字母文本中的第二个字母。 i、 e.第一个标记仅为“0”字母,但不显示。 对于第二个2个标记(40和80),仅显示0,其余的显示140。。。250,不显示任何文本。 文本大小似乎正常,但并非所有字符都显示出来。 图像以[0..1,0..1]正方形缩放。 我在drawText上找到并尝试了很多帖子,但没有一篇有用。 (View.

我有一个android应用程序,它显示一个比例,在5.0(棒棒糖)之前的所有版本上都运行良好,在5.0版本中,使用drawText方法绘制的所有文本都会被截断。 仅显示两个字母文本中的第二个字母。
i、 e.第一个标记仅为“0”字母,但不显示。
对于第二个2个标记(40和80),仅显示0,其余的显示140。。。250,不显示任何文本。
文本大小似乎正常,但并非所有字符都显示出来。 图像以[0..1,0..1]正方形缩放。
我在drawText上找到并尝试了很多帖子,但没有一篇有用。
(View.setLayerType()所有组合、setLinearText(true)、Paint.Style.FILL…)

画布就是这样创建的

mBackground = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(mBackground);
这是android 5.0中的一个捕获

这是从安卓4.4中捕获的

Android
canvas.DrawText()
canvas.DrawTextOnPath()
在小于1的大小下无法正常工作

增加字体大小。您可以缩放画布以进行补偿

见这个问题的答案。

您的秤参数是什么?我使用了每一个数字,但没有一个是有效的:(我用这个图书馆,有这个problem@AmirHosseinGhasemi你有没有发现这个问题?我也在使用这个库,似乎找不到解决这个问题的好答案。OP的解决方案似乎对我也不起作用。是的,它对我起作用,但只适用于textSize大于1f的情况。正如Kuffs所说,如果大小小于1f。我所有的绘图都是在1f x 1f的矩形中完成的,因此图像可以轻松缩放到任何尺寸。这就是我的文本大小最初为0.05f的原因。我编写的函数是,绘制一个更大尺寸的文本,然后重新缩放整个画布以匹配整个图像。@Luci我有相同的“配置”,一个1f x 1f矩形,想要的textSize为0.05f。但是我想不出你的函数可以使用什么好的参数来在我想要的地方绘制我的文本。我希望我的文本在x=0.5f,y=0.8f,大小为0.05f的地方绘制。我应该使用什么值来绘制。textSize和scale参数?@Magnas这是我对默认文本绘制GetDefaultate的设置xtValuePaint(){final Paint Paint Paint Paint=new Paint(Paint.LINEAR_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG);Paint.setColor(mTextValueColor);Paint.setStyle(Paint.Style.FILL_AND_STROKE);Paint.SetTrokeWidth(0.005f);Paint.SetTxtSize(mTextValueSize);Paint.SetTxtAlign(Align.CENTER);Paint.setTypeface(Typeface.SANS_-SERIF);Paint.SetShadayer(0.01f、0.002f、0.002f、mTextShadowColor);返回绘制;}其中TextValueSize为0.3f
mRangePaints[i] = new Paint(Paint.LINEAR_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG);
mRangePaints[i].setColor(mRangeColors[i]);
mRangePaints[i].setStyle(Paint.Style.STROKE);
mRangePaints[i].setStrokeWidth(0.005f);
mRangePaints[i].setTextSize(0.05f);
mRangePaints[i].setTypeface(Typeface.SANS_SERIF);
mRangePaints[i].setTextAlign(Align.CENTER);
mRangePaints[i].setShadowLayer(0.005f, 0.002f, 0.002f, mTextShadowColor);
mBackground = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(mBackground);
public static void drawScaledText(Canvas canvas, String text, float x, float y, Paint paint, float scale) {
    float originalStrokeWidth = paint.getStrokeWidth();
    float originalTextSize = paint.getTextSize();
    float textScaling = 10f/originalTextSize;
    paint.setStrokeWidth(originalStrokeWidth * textScaling);
    paint.setTextSize(originalTextSize * textScaling);
    canvas.save();
    canvas.scale(scale/textScaling, scale/textScaling);
    canvas.drawText(text, x * textScaling, y * textScaling, paint);
    canvas.restore();
    paint.setStrokeWidth(originalStrokeWidth);
    paint.setTextSize(originalTextSize);
}