2014-09-11 3 views
0

Я хотел нарисовать текст внутри круга, при условии, что текст должен быть правильно согласован в центре круга. На самом деле я не получаю общий метод/способ сделать текст в центре. Также не следует зависеть от того, находится ли текст в верхнем или нижнем регистре.сделать текст в центре круга

Моя попытка: -

textPaint.TextAlign = Paint.Align.Center; // basic need. 

После этого я попытался получить подъемов и спусков шрифта и получить свою половину и переместил текст ниже этого значения. Но это не по центру :(

var fontAscent = -textPaint.Ascent(); // default value is negative for ascent 
    var fontDescent = textPaint.Descent(); 

Примечание: -.. Я получаю круг в центре, чтобы его центральная точка является правильным

Любая идея, как я могу это сделать

+1

Похоже, у вас есть математика, поэтому, возможно, это [графика] (http://stackoverflow.com/questions/3654321/measuring-text-height-to-be- нарисованный на холсте-андроид) вопрос - это то, что вы ищете? –

+0

Спасибо @JeremyMiller Я очень новичок в android. Я борюсь за то, что искать. Я думаю, что это то, что мне нужно. Но нужно попробовать. – loop

ответ

0

попробовать это .

создать файл в папке вытяжке как circle.xml и скопировать этот код

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval" > 

<gradient 
    android:angle="270" 
    android:endColor="#00FFFFFF" 
    android:startColor="#00FFFFFF" /> 

</shape> 

и для ваших TextView набора Background использовать этот android:background="@drawable/circle"

+0

Я пытаюсь с тремя текстами в центре: - http://stackoverflow.com/questions/25712178/paint-class-to-draw-text – loop

1

Я хотел бы попробовать, как

Добавьте эту строку в макет,

<TextView 
android:layout_width = "100dp" 
android:layout_height = "100dp" 
android:background = "@drawable:circle" 
android:text = "Lorem Ipsum" 
android:gravity = "center" /> 

Затем создайте форму для вашей вытяжки папки.

<shape shape="circle" stroke_width = "1dp" stroke_color = "@android:color:black" /> 

Должно быть опечатки с ошибками. Я пишу это без IDE.

Удачи.

+0

Я пытаюсь с тремя текстами в центре: - http: // stackoverflow .com/questions/25712178/paint-class-to-draw-text – loop

+0

вы устанавливаете текст текста как android: text = "First \ nSecond \ Third". Это грязное решение, но может сработать для вас –

1

У меня есть похожие взгляды в моем приложении, мона. И то, что я сделал, находится в макете.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res/com.huteri.monas" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <CircleView 
     android:id="@+id/piegraph" 
     android:layout_width="330dp" 
     android:layout_height="330dp" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" /> 

    <TextView 
     android:id="@+id/sumpie_cat" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:layout_gravity="center" 
     android:fontFamily="sans-serif-condensed" 
     android:paddingBottom="50dp" 
     android:textAlignment="center" /> 

    <TextView 
     android:id="@+id/sumpie_percentage" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:layout_gravity="center" 
     android:textAlignment="center" 
     android:textSize="30sp" 
     app:typeface="roboto_black" /> 

    <TextView 
     android:id="@+id/sumpie_total" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:layout_gravity="center" 
     android:paddingTop="50dp" 
     android:textAlignment="center" 
     app:typeface="roboto_slab_light" /> 

</RelativeLayout> 

Ну, я должен признать, что это еще не лучшее решение, но оно работает для меня. Вы можете попробовать его в макете вместо

+0

Спасибо Huteri, можно рисовать дугу на вашем круге с некоторой анимацией? – loop

+0

@loop конечно .. Я тоже немного анимации – Huteri

+0

Можете ли вы добавить свой код анимации? Я не могу отметить это правильно, но вы так уверены, что +1 для вашего альтернативного решения :) У меня есть решение из комментария. – loop

Смежные вопросы