Android跨度或非中断空间导致换行符和文本复制(4.0 ICS)

Android跨度或非中断空间导致换行符和文本复制(4.0 ICS),第1张

概述我正在使用多个文本视图,大量使用跨度. 问题:有时在我的应用程序中(特别是在冰淇淋三明治上),我会看到一个不在文本字符串中的换行符,以及文本复制.有关示例,请参见下图.注意第三个句子是如何开始的,然后是换行符,然后文本被复制并且句子结束. 码: tv = (TextView) inflater.inflate(R.layout.fragment_reader_list_item, parent, 我正在使用多个文本视图,大量使用跨度. @H_403_2@问题:有时在我的应用程序中(特别是在冰淇淋三明治上),我会看到一个不在文本字符串中的换行符,以及文本复制.有关示例,请参见下图.注意第三个句子是如何开始的,然后是换行符,然后文本被复制并且句子结束.

@H_403_2@码:

tv = (TextVIEw) inflater.inflate(R.layout.fragment_reader_List_item,parent,false);SpannableStringBuilder ssb = ssbList.get(position);tv.setText(ssb,BufferType.SPANNABLE);
@H_403_2@当我调试代码时,变量’ssb’正确地只包含文本……“3不是对你负责的人的霸气,而是成群的例子.4当主人”……

@H_403_2@我已经注意到了几个小时内玩的一些细节:
导致该错误的条件似乎与渲染文本的总宽度有关.例如,如上图所示,如果我关闭数字上的粗体跨度,图示文本将正确显示,但是如果我离开粗体跨度,并关闭数字的颜色更改范围(这不会改变总的来说,这个问题仍然存在.

@H_403_2@值得注意的是,在每个数字后我都使用了不间断的空间.如果我用不间断的空间交换非破坏空间,我不再看到问题,但这或多或少可能是因为渲染的字符串发生了变化.这个问题可能与跨度没有任何关系,但似乎只有任何旧文本传递的BUG太大了.

@H_403_2@任何帮助是极大的赞赏!

@H_403_2@编辑:
这个BUG似乎与Bold 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跨度或非中断空间导致换行符和文本复制(4.0 ICS)全部内容,希望文章能够帮你解决Android跨度或非中断空间导致换行符和文本复制(4.0 ICS)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1135496.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存