Необходимость заполнения ширины строки, чтобы сделать фон Rect эффективным
В обработчике Android onDraw я хотел разделить маркировку меток осей в соответствии с (Формат инженерного номера '% 1.2E' [Знак] f.ffE [знак] ee) Fraction (f.ff) и Exponent (ee) и перезаписать метку на ранее нарисованных пикселях для эффекта разделения строки: ||
1,23
E-01 ||
void markYaxisTicks(Canvas canvas, Paint paint){
String refText = "-9.0000"; // somehow four String chars not making enough pixel width so adding 3 more zeroes
for(int intervalIndex=0;intervalIndex<=numIntervals;intervalIndex++) {
String ordinalText = String.format( Locale.getDefault(), "%+1.2E", spaceTime.maxOrdinal - intervalIndex * (spaceTime.maxOrdinal - spaceTime.minOrdinal)/numIntervals);
String fract = ordinalText.substring(0,ordinalText.indexOf('E')-1);
String expon = ordinalText.substring(ordinalText.indexOf('E'));
double textXpos = 0.0f; // picturePosition[0];
double textYpos = (picturePosition[1] + intervalIndex * pictureSize[1] / (double)numIntervals);
canvas.drawLine( (float)Origin[3],
(float)(picturePosition[1] + (intervalIndex * pictureSize[1] / (double)numIntervals)) ,
(float)(Origin[3] + 8.0f),
(float)(picturePosition[1] + (intervalIndex * pictureSize[1] / (double)numIntervals)) , paint );
int textHeight = getTextHeight(refText);
// when I use expon string for the Rect, the background owerwrite area is insufficient so I use longer refText instead
Rect background2 = getTextBackgroundSize((float)textXpos, (float)textYpos+2.0f*textHeight, refText, paint);
paint.setColor(Color.BLACK);
canvas.drawRect(background2, paint);
paint.setColor(rgbyPen[DAXES]);
canvas.drawText(expon, (float)textXpos, (float)textYpos+2.0f*textHeight, paint);
// likewise, when I use fract string for the Rect, the background owerwrite area is insufficient so I use longer refText instead
Rect background1 = getTextBackgroundSize((float)textXpos, (float)textYpos-textHeight, refText, paint);
paint.setColor(Color.BLACK);
canvas.drawRect(background1, paint);
paint.setColor(rgbyPen[DAXES]);
canvas.drawText(fract, (float)textXpos, (float)textYpos-textHeight, paint);
paint.setColor(Color.WHITE);
}
Использование String of fract или длина expon не перезаписывает ожидаемую область Rect.