2014-02-26 52 views
2

我正在创建一个显示通知号码的Imagebutton。这里是我的示例图像:Android:如何将文本写入图像中的特定区域

Icon Image

我的目标是写一个图片中的数字(1,2 ......)的具体黑圈。我尝试了RelativeLayout和FrameLayout,但不认为这是实现结果的可靠方法。原因是边缘,填充将根据不同的设备大小而有所不同。

任何建议开始?

+2

分离黑色圆圈&铅笔背景图像。使用FrameLayout将铅笔背景上的黑色圆圈定位。此外,使用该圆圈作为TextView的可绘制背景。 – JoelFernandes

+0

@nitesh不确定你的意思是什么意思?这是在我的问题。 – Signcodeindie

+0

@Signcodeindie你的图像在哪里? :) – nitesh

回答

2

在这里你去:

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

图片:enter image description here enter image description here

输出:

enter image description here

+0

谢谢!我仍然怀疑的一件事是你使用了8dp的边际值来使它正确,在我的日食中,我使用了10的值来达到期望的结果。 android:layout_marginRight =“10dp” android:layout_marginBottom =“10dp” – Signcodeindie

+0

这可能是因为圆形图像的宽度和高度。但是,您可以在各种屏幕上测试它,看看它是否工作正常。 – JoelFernandes

+0

嘿乔尔,谢谢你真的很容易解决问题。你应该得到一个标记作为答案。干杯! – Signcodeindie

0

您可以制作一个自定义的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); 
} 
0

尝试的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" /> 使用重力对齐图像中的文字。

0
<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" /> 
0
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); 
+0

如何在我的情况找到x,y? – Signcodeindie

+0

@Signcodeindie:请试试这个坐标'11,16' –

相关问题