1414
1515package apijson .demo .client .view ;
1616
17+ import zuo .biao .library .util .CommonUtil ;
1718import zuo .biao .library .util .StringUtil ;
19+ import android .app .Activity ;
1820import android .content .Context ;
19- import android .graphics .Color ;
2021import android .text .SpannableString ;
2122import android .text .Spanned ;
2223import android .text .TextPaint ;
23- import android .text .style . ClickableSpan ;
24+ import android .text .method . LinkMovementMethod ;
2425import android .util .AttributeSet ;
2526import android .view .View ;
2627import android .widget .TextView ;
28+ import apijson .demo .client .R ;
29+ import apijson .demo .client .activity_fragment .UserActivity ;
2730import apijson .demo .client .model .Comment ;
2831import apijson .demo .client .model .CommentItem ;
2932import apijson .demo .client .model .User ;
3235 */
3336public class CommentTextView extends TextView {
3437
38+ public interface OnNameClickListener {
39+ void onNameClick (int index , View widget );
40+ }
41+ private OnNameClickListener listener ;
42+ public void setOnNameClickListener (OnNameClickListener l ) {
43+ this .listener = l ;
44+ }
45+
3546
3647 public CommentTextView (Context context ) {
3748 super (context );
@@ -45,18 +56,15 @@ public CommentTextView(Context context, AttributeSet attrs, int defStyle) {
4556 super (context , attrs , defStyle );
4657 }
4758
48- private OnClickListener listener ;
49- public void setOnNameClickListener (OnClickListener l ) {
50- this .listener = l ;
51- }
59+
5260
5361 private Comment comment ;
5462 private User user ;
5563 private User toUser ;
5664 /**设置View
5765 * @param comment
5866 */
59- public void setView (CommentItem item , boolean showCommenter ) {
67+ public void setView (CommentItem item ) {
6068 if (item == null ) {
6169 item = new CommentItem ();
6270 }
@@ -66,62 +74,49 @@ public void setView(CommentItem item, boolean showCommenter) {
6674 String content = StringUtil .getTrimedString (comment .getContent ());
6775
6876 String userName = StringUtil .getTrimedString (user .getName ());
69- int userNameLength = showCommenter ? userName .length () : 0 ;
77+ int userNameLength = userName .length ();
7078
7179 String toUserName = StringUtil .getTrimedString (toUser .getName ());
7280
81+
7382 SpannableString msp = null ;
7483 if (toUser .getId () <= 0 ) {
75- msp = new SpannableString ((showCommenter ? userName + ": " : "" ) + content );
76- msp .setSpan (new ClickableSpan () {
77- @ Override
78- public void updateDrawState (TextPaint ds ) {
79- ds .setColor (Color .parseColor ("#009ed3" )); // 设置超链接颜色
80- ds .setUnderlineText (false ); // 超链接去掉下划线
81- }
82- @ Override
83- public void onClick (View widget ) {
84- if (listener != null ) {
85- listener .onClick (widget );
86- }
87- }
88- }, 0 , userNameLength , Spanned .SPAN_EXCLUSIVE_EXCLUSIVE );
84+ msp = new SpannableString (userName + " : " + content );
8985 } else {
90- msp = new SpannableString ((showCommenter ? userName : "" ) + "回复 " + toUserName
91- + ": " + content );
92- msp .setSpan (new ClickableSpan () {
93- @ Override
94- public void updateDrawState (TextPaint ds ) {
95- ds .setColor (Color .parseColor ("#009ed3" )); // 设置超链接颜色
96- ds .setUnderlineText (false ); // 超链接去掉下划线
97- }
98-
99- @ Override
100- public void onClick (View widget ) {
101- if (listener != null ) {
102- listener .onClick (widget );
103- }
104- }
105- }, 0 , userNameLength , Spanned .SPAN_EXCLUSIVE_EXCLUSIVE );
106-
107- msp .setSpan (new ClickableSpan () {
108- @ Override
109- public void updateDrawState (TextPaint ds ) {
110- ds .setColor (Color .parseColor ("#009ed3" )); // 设置超链接颜色
111- ds .setUnderlineText (false ); // 超链接去掉下划线
112- }
113-
114- @ Override
115- public void onClick (View widget ) {
116- if (listener != null ) {
117- listener .onClick (widget );
118- }
119- }
120- }, userNameLength + 3 , userNameLength + 3 + toUserName .length (),
121- Spanned .SPAN_EXCLUSIVE_EXCLUSIVE );
86+ msp = new SpannableString (userName + " 回复 " + toUserName + " : " + content );
87+ setSpan (msp , 1 , userNameLength + 4 , userNameLength + 4 + toUserName .length ());
12288 }
89+ setSpan (msp , 0 , 0 , userNameLength );
12390
12491 setText (msp );
125- // setMovementMethod(LinkMovementMethod.getInstance());
92+ setMovementMethod (LinkMovementMethod .getInstance ());
93+ }
94+
95+ private void setSpan (SpannableString msp , final int index , int start , int end ) {
96+ msp .setSpan (new ClickableSpan () {
97+
98+ @ Override
99+ public void onClick (View widget ) {
100+ onNameClick (index , widget );
101+ }
102+ }, start , end , Spanned .SPAN_EXCLUSIVE_EXCLUSIVE );
103+ }
104+
105+
106+ public void onNameClick (int index , View widget ) {
107+ if (listener != null ) {
108+ listener .onNameClick (index , widget );
109+ } else {
110+ CommonUtil .toActivity ((Activity ) getContext (), UserActivity .createIntent (getContext ()
111+ , index == 0 ? user .getId () : toUser .getId ()));
112+ }
113+ }
114+
115+ public abstract class ClickableSpan extends android .text .style .ClickableSpan {
116+ @ Override
117+ public void updateDrawState (TextPaint ds ) {
118+ ds .setColor (getResources ().getColor (R .color .blue )); // 设置超链接颜色
119+ ds .setUnderlineText (false ); // 超链接下划线
120+ }
126121 }
127122}
0 commit comments