Я пытаюсь нарисовать текст по пути, используя холст в Android. Я могу успешно получить текст для рисования на верхней овальной линии. То, что я пытаюсь сделать, это убедиться, что текст центрирован.Нарисовать текст на овальном пути в центре
Проблема в том, что, хотя я могу измерить текст, прежде чем он нарисован вокруг верхней линии овала, я не могу измерить его после. Это позволяет оценить, где текст должен быть нарисован на верхней овальной линии проблематичным, поскольку это всегда немного. Это связано с тем, что, когда я измеряю текст, который будет нарисован первоначально, он измеряется по прямой, а не как представлен в верхней строке овала.
Я пробовал применять setTextAlign(Paint.Align.CENTER)
, но это заставляет текст рисоваться около 3/4 в пути, а не то, что я хочу.
Есть ли у кого-нибудь идеи, как я мог рассчитать точку, чтобы нарисовать текст так, чтобы он был нарисован мертвой точкой верхней овальной линии или любым альтернативным методом, который может помочь?
Это необходимо сделать, используя холст. Это невозможно сделать с помощью XML TextViews и т. Д.
Спасибо.
Попытайтесь использовать 'drawTextOnPath()' –
Это то, что я использую, но проблема в том, что текст сосредоточен на верхней половине линии овала. Я могу успешно получить текст, чтобы привлечь вверху, это динамически, чтобы убедиться, что текст центрирован, и это проблема. –
Один из способов - рассчитать ширину отображаемого текста с помощью Paint.getTextBounds(), а затем определить путь соответственно, что устранит необходимость применения выравнивания по тексту. В идеале, объект выравнивания должен работать в соответствии с [документацией] (http://developer.android.com/reference/android/graphics/Canvas.html) –