简短的问题:
假设我有一个TextView,我希望文本本身(不是背景)会有一个可绘制的设置(而不仅仅是纯色),我应该怎么做?
我找到的唯一解决方案是this one,但它只适用于渐变颜色,我希望能够使用任何可绘制的颜色。
答案 0 :(得分:2)
好的,我想我找到了一个可能的解决方案,但我有一些注意事项:
这不是任何可绘制的。这是一个位图,所以你需要以某种方式将其转换为位图。
它要求您知道textView的大小(为此可以使用this)
它要求您有足够的内存用于与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);
}
我希望有更好的解决方案。
答案 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)
来自代码!