我需要将相同的CharacterStyle
附加到多个区域,因此我使用CharacterStyle.wrap()
。然后所有区域都加下划线但不可点击。
可能的原因是什么?
ssb.setSpan(CharacterStyle.wrap(clickableSpan), start, end, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
答案 0 :(得分:2)
这可能是Android框架中的错误。核心问题是方法SpannableStringBuilder.getSpans()
的实施或应处理ClickableSpan
的{{3}}的实施。
LinkMovementMethod
的{{3}}请ClickableSpan
SpannableStringBuilder
个instanceof
个CharacterStyle.wrap()
个实例ClickableSpan
基本上使用CharacterStyle.Passthrough
过滤其跨度。但问题是,如果您使用getSpans()
,则您的范围不再是ClickableSpan
实例,而是SpannableStringBuilder
实例。因此getSpans()
不再返回它,它不再可点击。
请注意,文本外观(图纸)不受此影响,因此它仍然看起来像LinkMovementMethod.onTouchEvent()
。
现在,要解决此问题,您必须扩展ClickableSpan
以修复textview.setMovementMethod(new FixedLinkMovementMethod());
实施(过于复杂),或者扩展ClickableSpan
实施以过滤{{1手动。您可以找到LinkMovementMethod
然后可以与
CharacterStyle.wrap()
但话又说回来,如果它是player.loadVideoById(videoId)
而不是var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: 'M7lc1UVf-VE',
playerVars: {
'loop' : 1,
'playlist': 'M7lc1UVf-VE'
},
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
,那么手动复制跨度可能会更容易。