大家都熟悉微信朋友圈或者是贴吧里的某一条评论,
比如: 小A回复小B:大吉大利,今晚吃鸡,哈哈哈。
点击小A和小B可以跳转到用户页面,点击整个Item就会响应其它事件,比如弹出键盘输入回复。
要实现这样的效果其实很简单,先自定义TextView,通过SpannableStringBuilder设置富文本格式,然后通过setText设置就可以了,看起来简单,但里面其实是有一些坑的,比如我实现了这种效果后,但发现点击Item其它地方的时候没有响应别的事件了。本篇文章就跟大家分享这个小知识点。先看效果:
创建Bean对象
创建评论对象和用户对象CommentBean和CommentUserSpan
public class CommentBean {
/* 评论内容 */
private String comment;
/* 评论人 */
private UserBean user;
/* 回复人 */
private UserBean replyUser;
/* 省略了get和set方法 */
......
}
public class UserBean {
private String userId;
private String userName;
/* 省略了get和set方法 */
......
}
bean对象没什么可说的。
自定义TextView
public class CommentTextView extends TextView {
public CommentTextView(Context context) {
this(context, null);
}
public CommentTextView(Context context, @Nullable AttributeSet attrs) {
this(context, attrs, 0);
}
public CommentTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setMovementMethod(CommentUserMovementMethod.getInstance());
}
public void setText(CommentBean comment) {
SpannableStringBuilder stringBuilder = new SpannableStringBuilder();
if (comment.getUser() != null) {
String