Android:如何将文本写入图像中的特定区域

Android:如何将文本写入图像中的特定区域,android,android-layout,android-button,android-image,Android,Android Layout,Android Button,Android Image,我正在创建一个显示通知编号的Imagebutton。以下是我的示例图像: 我的目标是在图像中特定的黑圈上写一个数字(1,2…)。我尝试了RelativeLayout和FrameLayout,但不认为这是实现结果的可靠方法。由于边距的原因,不同的设备大小会有不同的填充 有什么建议吗?您可以创建一个从ImageView扩展而来的自定义视图类。您必须重写onDraw方法并执行如下操作: @Override protected void onDraw(Canvas canvas) { supe

我正在创建一个显示通知编号的Imagebutton。以下是我的示例图像:

我的目标是在图像中特定的黑圈上写一个数字(1,2…)。我尝试了RelativeLayout和FrameLayout,但不认为这是实现结果的可靠方法。由于边距的原因,不同的设备大小会有不同的填充


有什么建议吗?

您可以创建一个从ImageView扩展而来的自定义视图类。您必须重写onDraw方法并执行如下操作:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    // Calculate x and y positions and set up a Paint instance with correct color/size
    canvas.drawText(String.valueOf(myNumber), x, y, myPaint);
}

尝试将bacground设置为图像的Textview

使用重力对齐图像内的文本。


<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="bottom|right"
    android:paddingRight="20dp"
    android:paddingBottom="15dp"
    android:textColor="@android:color/white"
    android:background="@drawable/text"
    android:text="1" />
给你:

<FrameLayout 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/pencil">

        <TextView
            android:id="@+id/circle"
            android:layout_width="22dp"
            android:layout_height="22dp"
            android:background="@drawable/circle"
            android:gravity="center"
            android:text="2"
            android:layout_gravity="bottom|right"
            android:layout_marginRight="8dp"
            android:layout_marginBottom="8dp"
            android:textColor="#FFFFFF"
            android:textSize="12sp" />

    </FrameLayout>

图像:

输出:


分离黑色圆圈和铅笔背景图像。使用FrameLayout将黑色圆圈定位在铅笔背景的顶部。另外,将圆圈用作可绘制到文本视图的背景。@nitesh不确定图像是什么意思?这在我的问题中。这不是你想要的答案,但是如果你使用一组数字为1,2..9,9+的图像不是更好吗?使用两位数看起来不太好。@Signcodeindie u r图像在哪里?:)@Signcodeindie我已经在下面发布了代码。和平!在我的情况下如何找到x,y?@signcodeinde:请试试这个坐标'11,16',谢谢!我仍然怀疑的一件事是,您使用了8 dp的边距值来获得正确的结果,在我的eclipse上,我使用了10的值来实现期望的结果。android:layout\u marginRight=“10dp”android:layout\u marginBottom=“10dp”这可能是因为圆形图像的宽度和高度。不过,你可以在不同的屏幕上测试它,看看它是否工作正常。嘿,乔尔,谢谢你让它变得简单并解决了这个问题。你应该得到一个分数作为答案。干杯@我很高兴我的回答对你有帮助
<FrameLayout 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/pencil">

        <TextView
            android:id="@+id/circle"
            android:layout_width="22dp"
            android:layout_height="22dp"
            android:background="@drawable/circle"
            android:gravity="center"
            android:text="2"
            android:layout_gravity="bottom|right"
            android:layout_marginRight="8dp"
            android:layout_marginBottom="8dp"
            android:textColor="#FFFFFF"
            android:textSize="12sp" />

    </FrameLayout>