我正在创建一个显示通知号码的Imagebutton。这里是我的示例图像:Android:如何将文本写入图像中的特定区域
我的目标是写一个图片中的数字(1,2 ......)的具体黑圈。我尝试了RelativeLayout和FrameLayout,但不认为这是实现结果的可靠方法。原因是边缘,填充将根据不同的设备大小而有所不同。
任何建议开始?
我正在创建一个显示通知号码的Imagebutton。这里是我的示例图像:Android:如何将文本写入图像中的特定区域
我的目标是写一个图片中的数字(1,2 ......)的具体黑圈。我尝试了RelativeLayout和FrameLayout,但不认为这是实现结果的可靠方法。原因是边缘,填充将根据不同的设备大小而有所不同。
任何建议开始?
在这里你去:
<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>
图片:
输出:
谢谢!我仍然怀疑的一件事是你使用了8dp的边际值来使它正确,在我的日食中,我使用了10的值来达到期望的结果。 android:layout_marginRight =“10dp” android:layout_marginBottom =“10dp” – Signcodeindie
这可能是因为圆形图像的宽度和高度。但是,您可以在各种屏幕上测试它,看看它是否工作正常。 – JoelFernandes
嘿乔尔,谢谢你真的很容易解决问题。你应该得到一个标记作为答案。干杯! – Signcodeindie
您可以制作一个自定义的View类,它从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);
}
尝试的TextView与bacground设定为图像
<TextView android:id="@+id/img" android:layout_width="45sp" android:layout_height="45sp" android:background="@drawable/circle" android:gravity="center" android:text="r" />
使用重力对齐图像中的文字。
<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" />
try this code
Bitmap bitmap = ... // Load your bitmap here
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setTextSize(10);
canvas.drawText("Some Text here", x, y, paint);
如何在我的情况找到x,y? – Signcodeindie
@Signcodeindie:请试试这个坐标'11,16' –
分离黑色圆圈&铅笔背景图像。使用FrameLayout将铅笔背景上的黑色圆圈定位。此外,使用该圆圈作为TextView的可绘制背景。 – JoelFernandes
@nitesh不确定你的意思是什么意思?这是在我的问题。 – Signcodeindie
@Signcodeindie你的图像在哪里? :) – nitesh