我们可以在drawable中添加文本吗?

时间:2014-02-17 06:49:15

标签: java android drawable

我想创建一个看起来像这样的drawable。

enter image description hereenter image description here

我知道如何创建图像背景,但即使在搜索之后,我也无法找到如何为该可绘制文件提供文本。有没有什么方法可绘制文件也完全相同,包含文本?

我不能使用textview,因为它是一个标签,我需要drawables来设置为背景资源(这就是我所知道的,如果我错了,请纠正我。)。所以我想要一个可绘制的文件,我可以将其设置为背景。

enter image description here

3 个答案:

答案 0 :(得分:1)

是的,你可以做到。

查看帖子 -

How to put text in a drawable ?

基本上,您必须扩展类Drawable并设置画布以绘制文本 一个可绘制的。

当您覆盖draw方法时,它会占用画布并在定义的位置上绘制文本。

Canvas有许多方法可用。

如图形文档中所述。 -

  

Canvas类有自己的一套绘图方法,你可以使用,   比如drawBitmap(...),drawRect(...),drawText(...)等等。   您可能使用的其他类也有draw()方法。对于   例如,您可能有一些您想要的Drawable对象   放在画布上。 Drawable有自己的draw()方法,需要你的   画布作为参数。

绘图文字将如下所示 -

canvas.drawText("Front Screen Torch", 30, 48, paint);

直接从资源中获取实际颜色 -

paint.setColor(getResources().getColor(R.color.black));

有关详情,请参阅Canvas

答案 1 :(得分:0)

是的,您可以做更多,有了画布的这种控制,我将使用“很多”来完全控制可绘制对象

public static Drawable getTextDrawable(@ColorInt int iColor) {
 Shape shape = new Shape(){

        @Override
        public void draw(Canvas canvas, Paint paint)
        {
            paint.setColor(Color.BLUE);

            paint.setTextSize(100);

            int radii = dpToPx(3);

            canvas.drawText("Hello Canvas", canvas.getWidth() - 150, canvas.getHeight() / 2, paint);

            canvas.drawCircle(canvas.getWidth() - radii * 2, canvas.getHeight() /2 - radii, radii, paint);
        }
    };
    shape.getHeight();

    Drawable drawable = new ShapeDrawable(shape);

    return drawable;
}

答案 2 :(得分:-1)

  

我们可以在drawable中添加文字吗?

不,你不能。

替代选项是使用Text创建一个drawable。