我的应用中有新闻Feed。在Feed项中,我有一个文本视图,可能有url链接和主题标签。我需要这两个url和hashtags是可点击的,这是实现的。
protected void setTextClickable(TextView txtView) {
L.i(getClass().getSimpleName(), "SET TEXT CLICKABLE ENTERED" + "LINES: " +String.valueOf(mTextViewLines));
String text = txtView.getText().toString();
ExpandableTextViewClickableSpan clickSpan = null;
ExpandableTextViewClickableSpan clickableSpan = null;
final SpannableString hashTagInText = new SpannableString(text);
String regexURL = "\\(?\\b((http|https)://|www[.])[-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|]";
String regexHashTag = "#([A-Za-z0-9_-]+)";
Matcher matcherURL = Pattern.compile(regexURL).matcher(hashTagInText);
Matcher matcherHashTag = Pattern.compile(regexHashTag).matcher(hashTagInText);
int color = view.getResources().getColor(R.color.tinted_green_colour);
while (matcherURL.find()) {
clickSpan = new ExpandableTextViewClickableSpan(currentFragment, false, color, hashTagInText,
matcherURL.start(), matcherURL.end(), MenuUtils.sURL_LINKID);
hashTagInText.setSpan(clickSpan, matcherURL.start(), matcherURL.end(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
while (matcherHashTag.find()) {
clickableSpan = new ExpandableTextViewClickableSpan(currentFragment, false, color, hashTagInText,
matcherHashTag.start(), matcherHashTag.end(), MenuUtils.sHASHTAG_LINKID);
hashTagInText.setSpan(clickableSpan, matcherHashTag.start(), matcherHashTag.end(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
但是,还要求如果消息长于4行,则省略并显示更多/更少选项的视图。
由于将方法引入颜色并设置可点击的网址和主题标签(与spannables一起使用,然后渲染省略号无效)。
所以现在我的省略号不起作用。我在SO上遇到了这个Spannable Ellipsis Issue。但是,除非在全局布局侦听器中完成,否则这需要我无法获得的行数。
我已经完成并成功获得了行数。然而问题是在调用onGlobalLayout
方法之前调用了绑定数据方法,其中应用了spannable并填充了布局(我想要应用我自己的省略号方法),这样就留下了0行数
有没有简单的方法将省略号和spannable结合起来?任何帮助表示赞赏。