在圆圈内绘制文字

时间:2013-11-23 21:21:33

标签: android drawable

我正在研究Android应用程序,我想在其中绘制一个带有文本的圆圈。我希望填充为白色,黑色边框和黑色文字。现在我有ShapeDrawable

mDrawable = new ShapeDrawable(new OvalShape());
mDrawable.getPaint().setColor(0xFFFFFF);

然而,这会使整个圆圈变白(并且背景为白色,你看不到它),经过一段时间的搜索,你怎么能在形状上添加文字,我似乎无法找到有效的答案。我还要注意,我将根据用户输入添加任意数量的不同文本的圆圈。任何帮助将非常感激!

2 个答案:

答案 0 :(得分:18)

您可以尝试这种替代方法。

创建一个可绘制的文件oval.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" >
   <solid android:color="#fff"/>
   <stroke android:width="2px" android:color="#000"/>
</shape>

然后创建RelativeLayout并使用椭圆可绘制

设置背景
<RelativeLayout
    android:id="@+id/circle"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:layout_gravity="center"
    android:background="@drawable/oval" >

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="@string/hello_world" />
</RelativeLayout>

结果将是这样的:

enter image description here

答案 1 :(得分:3)

我很肯定在这里回复,但这对其他人可能会有所帮助。

    ShapeDrawable colorCode = new ShapeDrawable(new OvalShape());
    colorCode.getPaint().setStyle(Paint.Style.FILL); //See more paint style for border circle etc. like STROKE
    colorCode.getPaint().setAntiAlias(true);
    colorCode.getPaint().setColor(getResources().getColor(YOUR_COLOUR_HERE_FROM_XML));
    colorCode.setIntrinsicHeight(Globals.dp2px(5, getActivity())); //converting dp to px, you can just put any integer instead of dp2px method
    colorCode.setIntrinsicWidth(Globals.dp2px(5, getActivity()));
    greenText.setBackgroundDrawable(colorCode);