【发布时间】:2013-04-01 03:22:23
【问题描述】:
小问题:
假设我有一个 TextView,并且我希望文本本身(不是背景)将有一个可绘制设置(而不仅仅是纯色),我应该怎么做?
我找到的唯一解决方案是 this one ,但它仅适用于渐变色,我希望能够使用任何可绘制对象。
【问题讨论】:
标签: android text textview android-drawable
小问题:
假设我有一个 TextView,并且我希望文本本身(不是背景)将有一个可绘制设置(而不仅仅是纯色),我应该怎么做?
我找到的唯一解决方案是 this one ,但它仅适用于渐变色,我希望能够使用任何可绘制对象。
【问题讨论】:
标签: android text textview android-drawable
好的,我想我已经找到了一个可能的解决方案,但我对此有一些注意事项:
它不适用于任何可绘制对象。它是用于位图的,因此您需要以某种方式将其转换为位图。
它要求你知道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);
}
希望有更好的解决方案。
【讨论】:
已编辑:
我认为不可能更改文本上使用的实际笔划,您可能拥有的最接近的最佳选择是使用不同的字体。
在 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)
来自代码!
【讨论】: