TextView の一部を非表示にしたい。具体的には、ユーザーに数学の問題を提示します。
9 * 9 = 81
81
そして目立たないようにしたい。ユーザーが正解を入力すると、数字の「8」と「1」が表示されます。
透明色 ( #00000000とColor.TRANSPARENTの両方)を使用しようとしましたがTextAppearanceSpan
、KindleFire デバイスとエミュレーターを除くすべてのデバイスとエミュレーターで完全に機能します。ForegroundColorSpan
Kindle Fire では、「81」が濃い灰色で表示されます。ラスタライザーはLinearLayout
、私のActivity
.
私の質問は、TextView
どちらTextAppearanceSpan
も使用せずにテキストの一部を非表示にするにはどうすればよいForegroundColorSpan
ですか? テキストを正しく測定するが、それをペイントしない別の「スパン」はありますか?
アップデート
私は、(タイトルから判断して)助けになるかもしれないいくつかの神秘的なRasterizerSpan
とが存在することを発見しました。MetricAffectingSpan
ご覧のとおり、RasterizerSpan の唯一の意味は、Rasterizer を TextPaint オブジェクトに設定することです。
public void updateDrawState(TextPaint ds) {
ds.setRasterizer(mRasterizer);
}
私はそれが有望だと思いました.一種の「無効な」ラスタライザー(何もしないだけです)を設定できれば、このテキストは見えなくなります。不運にも
new RasterizerSpan(null); // (set mRasterizer to null)
助けにはなりませんでした。
私の別のアイデアは、「void」シェーダーを設定するカスタム ShaderSpan を実装することです。
public void updateDrawState(TextPaint ds) {
ds.setShader(myCustomVoidShader);
}
しかし、「何も生成しない」シェーダーを作成する方法がわかりません。