以编程方式将文本放在drawable上的最简单方法

时间:2016-12-14 11:58:56

标签: android drawing drawable

我有这个图标:icon

我将以drawable开始使用它。

Drawable myIcon = getResources().getDrawable( R.drawable.icon );

我需要programmaticaly在其上放置一些文本(文件扩展名)。

这是我想要的结果:desired result

我无法制作多个静态图标,因为我可以接收任意文件扩展名

3 个答案:

答案 0 :(得分:9)

public BitmapDrawable writeOnDrawable(int drawableId, String text){

        Bitmap bm = BitmapFactory.decodeResource(getResources(), drawableId).copy(Bitmap.Config.ARGB_8888, true);

        Paint paint = new Paint(); 
        paint.setStyle(Style.FILL);  
        paint.setColor(Color.BLACK); 
        paint.setTextSize(20); 

        Canvas canvas = new Canvas(bm);
        canvas.drawText(text, 0, bm.getHeight()/2, paint);

        return new BitmapDrawable(bm);
    }

使用此方法。将为您提供帮助。

答案 1 :(得分:2)

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">


                <ImageView
                    android:id="@+id/folder"
                    android:src="@drawable/image_name"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />


                 <TextView

                    android:textColor="@color/green"
                    android:textStyle="bold"
                    android:id="@+id/text"
                    android:text="10"
                    android:layout_centerInParent="true"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
            </RelativeLayout>

答案 2 :(得分:0)

如果您不打算在此处打印图像并且只需在屏幕上显示,最简单的方法是在text的中心打印img

您可以使用RelativeLayout

来完成此操作
<RelativeLayout> // Only works inside a RelativeLayout
  <ImageView
    android:id="@+id/myImage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/myImageSouce" />

  <TextView
    android:id="@+id/myImageText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/myImage"
    android:layout_alignTop="@+id/myImage"
    android:layout_alignRight="@+id/myImage"
    android:layout_alignBottom="@+id/myImage"
    android:layout_margin="1dp"
    android:gravity="center"
    android:text="Hello"
    android:textColor="#000000" />
 </RelativeLayout>

这可能是最简单的解决方案,它会根据img尺寸将文本对齐到图像的中心。