2017-05-24 3 views
0

J'utilise linkify pour mettre en surbrillance URL et e-mails dans mon affichage de texte, cela fonctionne correctement dans le premier rendu, mais quand j'essaie de changer le texte ne fonctionne pas.
dans mon affichage de texte J'utilise spannable pour ajouter voir plus et voir moins lorsque la longueur du texte plus que le nombre spécifique de chaîne. ce qui suit ma fonction span qui ajouter du texte
linkify ne fonctionne pas lors de la mise à jour du texte

private static SpannableStringBuilder getTextToShown(Activity activity, String text, boolean showMore) { 

    SpannableStringBuilder sb; 

    final ForegroundColorSpan fcs = new ForegroundColorSpan(activity.getResources().getColor(R.color.cyan_mostly_black_light)); 
    String textToShow; 
    if (!showMore) { 
     textToShow = text + " " + activity.getResources().getString(R.string.see_less); 
     sb = new SpannableStringBuilder(textToShow); 
     sb.setSpan(fcs, text.length(), textToShow.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); 
     sb.setSpan(new android.text.style.StyleSpan(android.graphics.Typeface.BOLD), text.length(), textToShow.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
    } else { 
     textToShow = text.substring(0, NUMBER_OF_CHAR_TO_SHOWN - 1) + " " + activity.getResources().getString(R.string.see_more); 
     sb = new SpannableStringBuilder(textToShow); 
     sb.setSpan(fcs, NUMBER_OF_CHAR_TO_SHOWN, textToShow.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); 
     sb.setSpan(new android.text.style.StyleSpan(android.graphics.Typeface.BOLD), NUMBER_OF_CHAR_TO_SHOWN, textToShow.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
    } 
    return sb; 
    } 

et je l'utilise par ce qui suit

if (postModel.getObject().getContent().length() > 140) { 
      post_data.setText(getTextToShown(activity, postModel.getObject().getContent(), true)); 
      showMore = true; 
      post_data.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       if (showMore) { 
       post_data.setText(getTextToShown(activity, postModel.getObject().getContent(), false)); 
       showMore = false; 
       } else { 
       post_data.setText(getTextToShown(activity, postModel.getObject().getContent(), true)); 
       showMore = true; 
       } 
      } 
      }); 
     } else { 
      post_data.setText(postModel.getObject().getContent()); 
     } 

et j'ajouter Linkify par ajouter cette

post_data.setMovementMethod(LinkMovementMethod.getInstance()); 
post_data.setLinkTextColor(Color.BLUE); 
Linkify.addLinks(post_data, Linkify.WEB_URLS | Linkify.EMAIL_ADDRESSES | Linkify.PHONE_NUMBERS); 

jusqu'à maintenant est un travail bien sans aucun problème mais quand essayer de cliquer dans voir plus dans textview il rend le nouveau texte en textview mais ne pas mettre en évidence des liens ou emai ls, j'essaie de l'exécuter dans le thread UI mais aussi j'obtiens le même résultat. De l'aide ?

Répondre

0

je résous par enlever linkify et ajouter que les éléments suivants dans xml

android:textColorLink="@color/blue.pure" 
android:autoLink="all" 

et l'utilisation.