Android:如何将文本写入图像中的特定区域
我正在创建一个显示通知编号的Imagebutton。以下是我的示例图像: 我的目标是在图像中特定的黑圈上写一个数字(1,2…)。我尝试了RelativeLayout和FrameLayout,但不认为这是实现结果的可靠方法。由于边距的原因,不同的设备大小会有不同的填充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
有什么建议吗?您可以创建一个从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>