Чтобы нарисовать текст в центре каждого сегмента круговой диаграммы, необходимо рассчитать центр каждого сегмента. Центр каждого текстового элемента для рисования на этом сегменте должен быть выровнен с этой центральной точкой - что достигается путем вычитания половины ширины текстовых границ из центральной координаты x (или использования paint.setTextAlign (Align.CENTER);) и половины текста высота границы от центральной координаты y.
Что касается нахождения центра сегмента, он требует немного больше внимания, чем использование простой геометрии.
Центральные координаты сегмента можно найти по:
x = (/* radius of pie chart */ /2)*cos(/*angle in RADIANS */) [angle in radians = Math.toRadians(/*half the sweep angle in degrees*/)
y = (/* radius of pie chart */ /2)*sin(/*angle in RADIANS */)
Почти там ... не забудьте добавить координаты x и y центра вашей круговой диаграммы к указанным выше значениям x и y, в противном случае вы пытаетесь нарисовать круг с центром в (0,0) в Ваш пользовательский вид!
Скажем, ваша круговая диаграмма центрирована в фактическом центре вашего представления, которое вы хотите добавить:
x += getWidth()/2;
y += getHeight()/2;
И последнее, но не менее важное, учитывая длину текста, который нужно нарисовать - получите границы вашего текста, используя, например:
Paint paint = new Paint();
paint.setColor(Color.WHITE);
paint.setTextAlign(Align.CENTER); // This centres the text horizontally
String labelText = "TEST";
Rect textBounds = new Rect();
paint.getTextBounds(labelText, 0, labelText.length(), textBounds);
y -= textBounds.height()/2;
Тогда ваш текст должен отображаться правильно.