SelectTextHelper icon indicating copy to clipboard operation
SelectTextHelper copied to clipboard

空格太多导致换行时,选中空格部分没有高亮

Open gaifanking opened this issue 3 years ago • 8 comments

Screenshot_20220914_154621 如图所示,文字内容为1 空格 空格... 8 ,中间为n多个空格, 这种情况会导致文字换行, 然后选择空格部分,结果没有高亮

gaifanking avatar Sep 14 '22 07:09 gaifanking

是个bug,马上修复 ~~

ITxiaoguang avatar Sep 14 '22 12:09 ITxiaoguang

感谢大佬,我看了下源码,这个背景是使用BackgroundColorSpan画的,然后我写了个demo,给textview设置BackgroundColorSpan,发现空格过多导致换行后就是无法给空格高亮,试了几个办法都不行。期盼大佬的结果。

gaifanking avatar Sep 15 '22 02:09 gaifanking

空格的问题,空格有挺多种的,需要我们把空格转成不间断空格 \u00A0 稍后在代码核心层加上

  textView.text = textView.text.toString()
                // 半角空格(英文符号) 转 不间断空格
                .replace("\u0020", "\u00A0")
                // 全角空格(中文符号) 转 不间断空格
                .replace("\u3000", "\u00A0")

ITxiaoguang avatar Sep 16 '22 01:09 ITxiaoguang

不过这样英文单词就不能分割开了

ITxiaoguang avatar Sep 16 '22 01:09 ITxiaoguang

棒棒哒,但是这个换成u00a0后,换行效果看起来和微信不一致了,微信的有对齐,我们的没对齐。还有别的办法吗?

gaifanking avatar Sep 16 '22 01:09 gaifanking

就是说文字里那个8,微信上是第2行顶头,但更换空格后,它就不顶头了,往后面移动了几个位置。

gaifanking avatar Sep 16 '22 01:09 gaifanking

是的,我这个是直接改变了空格了,微信的没改变空格,目前不懂微信怎么实现的呢

ITxiaoguang avatar Sep 16 '22 02:09 ITxiaoguang

是很难搞哦,我们试了ReplacementSpan,能画出来,但是拖动又出了问题。后来想重写TextView的draw方法,感觉也很难办。

gaifanking avatar Sep 16 '22 02:09 gaifanking