简短的问题:
假设我有一个 TextView,并且我希望文本本身(不是背景)将有一个可绘制设置(而不仅仅是纯色),我应该怎么做?
我发现的唯一解决方案是这个,但它仅适用于渐变色,我希望能够使用任何可绘制对象。
简短的问题:
假设我有一个 TextView,并且我希望文本本身(不是背景)将有一个可绘制设置(而不仅仅是纯色),我应该怎么做?
我发现的唯一解决方案是这个,但它仅适用于渐变色,我希望能够使用任何可绘制对象。
好的,我想我已经找到了一个可能的解决方案,但我对此有一些注意事项:
它不适用于任何可绘制对象。它用于位图,因此您需要以某种方式将其转换为位图。
它要求您知道 textView 的大小(您可以将其用于此目的)
它要求您有足够的内存来存储与 textView 大小相同的缩放位图。
不知道如何使它按字符或按行工作。
这是代码:
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);
}
我希望有一个更好的解决方案。
编辑:
我不相信可以更改文本上使用的实际笔画,您可能拥有的最接近的最佳选择是使用不同的字体。
在 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)
从代码!