android - 如何将可绘制对象设置为 TextView 的文本?

标签 android text textview android-drawable

简短问题:

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

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

最佳答案

好吧,我想我已经找到了一个可能的解决方案,但我有一些关于它的注释:

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

  2. 它要求您知道 textView 的大小(您可以使用 this 来实现此目的)

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

希望有更好的解决方案。

关于android - 如何将可绘制对象设置为 TextView 的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15906301/

相关文章:

android - 无法在 docker 中获取 gradle build-tools - Apple M1

text - 如何强制 Sublime Text 2 在 PHP 文件中使用 3 个空格的制表符?

android - 在 Android 中将文本重力更改为顶部

java - Android 上 TextView 中的多个可点击链接

android - TextView.setVisibility(GONE) 不工作

安卓|如何使用 com.android.setupwizardlib

android - 如何永久锁定 MIFARE Ultralight C 标签中的特定数据页?

android - com.squreup.moshi.JsonDataException : Expected a string but was NULL at path $. 数据.性别

string - 使用 Perl 从字符串中删除 BOM

text - 如何在 QML 的矩形中包装一些文本?