2

简短的问题:

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

我发现的唯一解决方案是这个,但它仅适用于渐变色,我希望能够使用任何可绘制对象。

4

2 回答 2

2

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

  1. 它不适用于任何可绘制对象。它用于位图,因此您需要以某种方式将其转换为位图。

  2. 它要求您知道 textView 的大小(您可以将用于此目的)

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

  4. 不知道如何使它按字符或按行工作。

这是代码:

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);
}

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

于 2013-04-17T14:34:38.153 回答
0

编辑:

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

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

为此,您必须将文件包含在您的资产文件夹中并从代码中调用(也许有一种使用 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)

从代码!

于 2013-04-09T15:50:32.410 回答