如何将drawable设置为TextView的文本?

时间:2013-04-09 15:37:36

标签: android text textview android-drawable

简短的问题:

假设我有一个TextView,我希望文本本身(不是背景)会有一个可绘制的设置(而不仅仅是纯色),我应该怎么做?

我找到的唯一解决方案是this one,但它只适用于渐变颜色,我希望能够使用任何可绘制的颜色。

2 个答案:

答案 0 :(得分:2)

好的,我想我找到了一个可能的解决方案,但我有一些注意事项:

  1. 这不是任何可绘制的。这是一个位图,所以你需要以某种方式将其转换为位图。

  2. 它要求您知道textView的大小(为此可以使用this

  3. 它要求您有足够的内存用于与textView大小相同的缩放位图。

  4. 不确定如何使每个字符或每行都能正常工作。

  5. 以下是代码:

    public static void setBitmapOnTextView(final TextView tv, final Bitmap bitmap) {
        final TileMode tile_mode = TileMode.CLAMP;
        final int height = tv.getHeight();
        final int width = tv.getWidth();
        final Bitmap temp = Bitmap.createScaledBitmap(bitmap, width, height, true);
        final BitmapShader bitmapShader = new BitmapShader(temp, tile_mode, tile_mode);
        tv.getPaint().setShader(bitmapShader);
    }
    

    我希望有更好的解决方案。

答案 1 :(得分:0)

<强>编辑:

我不相信可以更改文本中使用的实际笔划,您可能拥有的最佳选择是使用不同的字体。

在Android中,您可以使用任何* .ttf字体“绘制”任何文本。

为此,您必须将文件包含在您的assets文件夹中并从代码中调用(可能有使用XML的方法,但我不知道如何):

TypeFace mFont = TypeFace.createFromAsset(mContext.getAssets(), "my_font.ttf");
mTextView.setTypeFace(mFont);

我认为这是关闭你会对文本产生不同的中风。

原始回答:

TextView具有以下属性:

Drawable Top
Drawable Bottom
Drawable Left
Drawable Right

您在XML上设置。或者你可以打电话

setCompoundDrawables(left, top, right, bottom)

来自代码!