Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android TextView在Kindle Fire上打造隐形跨度_Android_Android Emulator_Invisible_Kindle Fire_Spannablestring - Fatal编程技术网

android TextView在Kindle Fire上打造隐形跨度

android TextView在Kindle Fire上打造隐形跨度,android,android-emulator,invisible,kindle-fire,spannablestring,Android,Android Emulator,Invisible,Kindle Fire,Spannablestring,我想让TextView的一部分不可见。具体而言,我向用户提出了一个数学问题: 9*9=81 我希望81不可见。当用户键入正确答案时,我会先显示数字“8”,然后显示数字“1” 我尝试使用透明颜色的TextAppearanceSpan和ForegroundColorSpan(都是#00000000和color.transparent),它们适用于除KindleFire设备和仿真器之外的所有设备和仿真器 在KindleFire上,“81”显示为深灰色。光栅化器似乎试图使其在某种“暗灰色”背景下不可见,

我想让TextView的一部分不可见。具体而言,我向用户提出了一个数学问题:

9*9=81

我希望
81
不可见。当用户键入正确答案时,我会先显示数字“8”,然后显示数字“1”

我尝试使用透明颜色的
TextAppearanceSpan
ForegroundColorSpan
(都是#00000000color.transparent),它们适用于除KindleFire设备和仿真器之外的所有设备和仿真器

在KindleFire上,“81”显示为深灰色。光栅化器似乎试图使其在某种“暗灰色”背景下不可见,而不是在我在
活动的根
线性布局中设置的背景(看起来像网格纸图像)

我的问题是:如何既不使用
textpearancespan
也不使用
ForegroundColorSpan
使
TextView
中的部分文本不可见?是否存在另一个“跨度”可以正确测量文本,但不能绘制文本

更新

我发现存在一些神秘的
光栅span
MetricAffectingSpan
,这可能(从标题判断)有所帮助

如我所见,光栅化器span的唯一含义是为TextPaint对象设置光栅化器:

    public void updateDrawState(TextPaint ds) {
    ds.setRasterizer(mRasterizer);
}
我发现它很有希望:如果我能够设置一种“void”光栅化器(它什么也不做),它将使文本不可见。不幸的是

new RasterizerSpan(null); // (set mRasterizer to null)
没有帮助

我的另一个想法是实现一个自定义着色器span,它将设置一个“void”着色器:


但我不知道如何创建一个“不产生任何结果”的着色器。请查看在您的
ForegroundColorSpan上重写
updateDrawState()
和调用是否有效:

public class TransparentSpan extends ForegroundColorSpan {
    private final PorterDuffXfermode MODE = new PorterDuffXfermode(PorterDuff.Mode.DST);

    public TransparentSpan(int color) {
        super(color);
    }

    @Override
    public void updateDrawState(TextPaint ds) {
        super.updateDrawState(ds);
        ds.setXfermode(MODE);
    }
}

很抱歉,我没有Kindle Fire可供测试:)

查看在您的
ForegroundColorSpan上覆盖
updateDrawState()
,调用是否有效:

public class TransparentSpan extends ForegroundColorSpan {
    private final PorterDuffXfermode MODE = new PorterDuffXfermode(PorterDuff.Mode.DST);

    public TransparentSpan(int color) {
        super(color);
    }

    @Override
    public void updateDrawState(TextPaint ds) {
        super.updateDrawState(ds);
        ds.setXfermode(MODE);
    }
}

抱歉,我没有KindleFire可供测试:)

为什么不使用android可见性(正确或错误)。它将完成与您需要的相同的工作(或者有一个特定的原因让您撒谎以使用Span)?

为什么不使用android可见性(正确或错误)。它将完成与您所需的相同的工作(或者您可能会说谎以使用Span)?

您可以使用AbsoluteSizeSpan,将大小设置为0。所以它将是隐形的

span=新的绝对尺寸span(0,真); spannableString.setSpan(span,wordPosition.start,wordPosition.end,span.span_EXCLUSIVE_EXCLUSIVE)

注意:
不可见单词的下一个单词将出现在不可见单词的位置。

您可以使用AbsoluteSizeSpan,将大小设置为0。所以它将是隐形的

span=新的绝对尺寸span(0,真); spannableString.setSpan(span,wordPosition.start,wordPosition.end,span.span_EXCLUSIVE_EXCLUSIVE)

注意:
不可见单词的下一个单词将出现在不可见单词的位置。

如果将整个TextViews TextColor设置为透明,kindle fire上会发生什么情况?extend ForegroundColorSpan&override updateDrawState&不要调用super方法>如果将整个TextViews TextColor设置为透明,kindle fire上会发生什么?它工作正常(它是不可见的)。2Satya:super的方法是ds.setColor(mColor)。如果我不调用它,颜色将保持不变(=黑色)。它将不透明。如果将整个TextViews TextColor设置为透明,kindle fire上会发生什么?扩展ForegroundColorSpan并覆盖updateDrawState&不要调用super方法,在该>中,如果将整个TextViews TextColor设置为透明,kindle fire上会发生什么?它工作正常(不可见)。2Satya:super的方法是ds.setColor(mColor).如果我不叫它,颜色保持不变(=黑色)。它将不透明。