У меня есть 4 Strings
. Я хотел бы нарисовать прямоугольник вокруг каждого, и они будут равны расстоянию друг к другу. У меня есть код, который «работает», но мне нужно 3 пробела для моего последнего прямоугольника, чтобы сделать расстояние равным, и я не понимаю, почему. Я использую LG G Watch R, если это имеет значение.Android холст нарисовать несколько прямоугольников равного расстояния
private void drawDate(Canvas canvas, float centerX, float centerY)
{
float x = centerX + 75f;
float y = centerY + 50f;
String dayOfWeek = daysOfWeek[mTime.weekDay] + ",";
String month = months[mTime.month];
String monthDay = mTime.monthDay + ",";
String year = Integer.toString(mTime.year);
float height = outLinePaint.getTextSize();
float totalWidth = outLinePaint.measureText(String.format("%s %s %s %s", dayOfWeek, month, monthDay, year));
final float spaceWidth = outLinePaint.measureText(" ");
x -= totalWidth/2f;
outLinePaint.setStyle(Paint.Style.FILL);
float halfWidth = outLinePaint.measureText(dayOfWeek)/2f;
canvas.drawRect(x - halfWidth, y - height, x + halfWidth, y + height /2f , whitePaint);
canvas.drawText(dayOfWeek, x, y, outLinePaint);
x += (halfWidth*2f)+spaceWidth;
halfWidth = outLinePaint.measureText(month)/2f;
canvas.drawRect(x - halfWidth, y - height, x + halfWidth, y + height /2f , whitePaint);
canvas.drawText(month, x, y, outLinePaint);
x += (halfWidth*2f)+spaceWidth;
halfWidth = outLinePaint.measureText(monthDay)/2f;
canvas.drawRect(x - halfWidth, y - height, x + halfWidth, y + height /2f , whitePaint);
canvas.drawText(monthDay, x, y, outLinePaint);
//THIS LINE
x += (halfWidth*2f)+spaceWidth+spaceWidth+spaceWidth;
//it looks right on the canvas, but why can I not simply
//x += (halfWidth*2f)+spaceWidth; like above?
halfWidth = outLinePaint.measureText(year)/2f;
canvas.drawRect(x - halfWidth, y - height, x + halfWidth, y + height /2f , whitePaint);
canvas.drawText(year, x, y, outLinePaint);
outLinePaint.setStyle(Paint.Style.STROKE);
}
Примечание: Эта "BUG" только эффекты последней строки
Это то, что я ожидаю (И что я получу, если я использую x += (halfWidth*2f)+spaceWidth+spaceWidth+spaceWidth;
):
Однако если я использую x += (halfWidth*2f)+spaceWidth;
, как я это делаю с другими моими 3, я получаю:
Это может помочь, если вы разместили изображение того, что вы ожидаете от того, что получаете сейчас. – Karakuri
@ Karakuri, обновленный с изображениями. – MeetTitan
Вы делаете это слишком сложным, почему вы используете оправдание центра? Также все это можно сделать легко, используя BackgroundColorSpan – pskink