在圆圈的中心做文字

时间:2014-09-11 13:14:03

标签: android

我想在圆圈内绘制一个文本,前提是文本应该在圆圈的中心正确匹配。实际上我没有得到一个通用的方法/方法来在中心制作文字。 此外,它不应该取决于文本是大写还是小写。

我的尝试: -

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

之后,我试图获得字体的Ascent和Descent并得到它们的一半并将此值移动到下面的文本。但它没有集中:(

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

注意: - 我在中心得到圆圈,所以它的中心点是正确的。

任何想法我该怎么做。

3 个答案:

答案 0 :(得分: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的情况下编写它。

祝你好运。

答案 1 :(得分:1)

我的应用程序中有类似的观点,monas。而我所做的就是布局。

<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>

嗯,我必须承认这不是最好的解决方案,但它对我有用。您可以在布局中尝试

答案 2 :(得分:0)

试试这个。

在drawable文件夹中创建一个文件作为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>

并且TextViewBackground使用此android:background="@drawable/circle"