我想让我的 TextView 的一部分不可见。详细地,我向用户提出一个数学问题:
9 * 9 = 81
我想81
隐身。当用户输入正确答案时,我会显示数字“8”,然后显示“1”。
我尝试使用TextAppearanceSpan
透明ForegroundColorSpan
颜色(#00000000和Color.TRANSPARENT),它们适用于除 KindleFire 设备和模拟器之外的所有设备和模拟器。
在 Kindle Fire 上,“81”显示为深灰色。似乎光栅化器试图使其在某些“深灰色”背景下不可见,而不是在我设置在LinearLayout
我的Activity
.
我的问题是:如何TextView
使用既不TextAppearanceSpan
也不使部分文本不可见ForegroundColorSpan
?是否存在另一个正确测量文本但不绘制文本的“跨度”?
更新
我发现存在一些神秘的RasterizerSpan
and MetricAffectingSpan
,这可以(从标题判断)有所帮助。
如我所见, RasterizerSpan 的唯一含义是将 Rasterizer 设置为 TextPaint 对象:
public void updateDrawState(TextPaint ds) {
ds.setRasterizer(mRasterizer);
}
我发现它很有希望:如果我能够设置一种“无效”光栅化器(什么都不做),它将使该文本不可见。很遗憾
new RasterizerSpan(null); // (set mRasterizer to null)
没有帮助。
我的另一个想法是实现一个自定义 ShaderSpan 来设置一个“void”着色器:
public void updateDrawState(TextPaint ds) {
ds.setShader(myCustomVoidShader);
}
但我不明白如何创建一个产生“无”的着色器。