gpt4 book ai didi

Android Span or Non-Breaking Space Causing line break and text duplication (4.0 ICS)

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:04:30 25 4
gpt4 key购买 nike

我正在使用多个大量使用 span 的 TextView 。

问题:有时在我的应用程序中(特别是在 Ice Cream Sandwich 上)我会看到文本字符串中没有的换行符以及文本重复。有关示例,请参见下图。请注意第三个句子是如何开始的,然后是换行符,然后文本被复制,句子结束。

enter image description here

代码:

tv = (TextView) inflater.inflate(R.layout.fragment_reader_list_item, parent, false);
SpannableStringBuilder ssb = ssbList.get(position);
tv.setText(ssb, BufferType.SPANNABLE);

当我调试代码时,变量 'ssb' 正确地只包含文本 ..."3 不是对你负责的人的霸道,而是对羊群的榜样。4 而当酋长"...

我在使用它几个小时后注意到的一些细节:导致错误的条件似乎与呈现文本的整体宽度有关。例如,对于上图的文本,如果我关闭数字上的粗体范围,图片中的文本将正确显示,但是如果我保留粗体范围,并关闭数字上的颜色变化范围(这不会改变宽度),问题仍然存在。

同样值得注意的是,在每个数字之后我都使用了一个不间断的空格。如果我将不间断空格换成间断空格,我就看不到问题了,但这或多或少可能是因为呈现的字符串发生了变化。这个问题可能与 span 没有任何关系,但它似乎是一个太大的错误,无法通过任何旧文本传递。

非常感谢任何帮助!

编辑:这个错误似乎与粗体跨度的使用密切相关。将其从数字中删除可以解决问题。这就是我目前采用的解决方法。如果有更好的选择就好了。

最佳答案

据我了解您的问题,只需使用另一个 SpannableStrinBuilder sb 并按照以下定义在 sb 中设置文本。我正在删除制表符和新行。

SpannableStringBuilder sb = new SpannableStringBuilder();
for(int loop=0 ; loop<(str.length() -1); loop++)
{
if(!(str.subSequence(loop, loop+1).equals("\t") ||
str.subSequence(loop, loop+1).equals("\n"))
)
{
sb.append(str.charAt(loop));
}
}

关于Android Span or Non-Breaking Space Causing line break and text duplication (4.0 ICS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15491462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com