2017-09-05 7 views
0

J'ai un TextView avec maxLines:5 et ellipsize:end appliquée, j'utilise également setMovementMethod(LinkMovementMethod.getInstance()) sur le TextView pour établir des liens cliquable (contenu HTML). La combinaison de tout ce qui précède désactive le texte tronqué et ajoute le suffixe «...».TextView maxLines, méthode de mouvement et ellipsize

Une idée de ce qui ne va pas et comment l'éviter?

Sans régler la méthode de déplacement, tout fonctionne comme prévu.

+0

Pourriez-vous vérifier ma réponse? – KeLiuyue

Répondre

-1
<TextView 
     android:id="@+id/html" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:maxLines="5" 
     android:ellipsize="end"/> 

     //inside your activity 
     public class A extends AppCompatActivity{ 

       TextView html = (TextView) view.findViewById(R.id.html); 
       html.setText(Html.fromHtml("this is an example <a href=\"www.google.com\">google</a> link to google")); 
       html.setMovementMethod(LinkMovementMethod.getInstance()); 
       . 
       . 
       . 
     } 
+0

même problème se produit dans votre code – aviran

0

Essayez ceci.

Way 1. utiliser setMovementMethod et Html.fromHtml

Je n'ai pas défini maxLines et ellipsize. C'est un bon travail.

Dans votre code XML

<TextView 
    android:id="@+id/tv_html" 
    android:ellipsize="end" 
    android:maxLines="5" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

Alors Dans votre code java

TextView tv_html = (TextView) findViewById(R.id.tv_html); 
tv_html.setText(Html.fromHtml("google:" + "<a href='https://www.google.com.hk'>link to it</a> ")); 
tv_html.setMovementMethod(LinkMovementMethod.getInstance());// make it active 

Way 2. utiliser android:autoLink="all" dans le code XML

<TextView 
    android:id="@+id/tv_html" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:autoLink="all"/> 

Puis dans votre code java.

TextView tv_html = (TextView) findViewById(R.id.tv_html); 
tv_html.setText("google: https://www.google.com.hk")); 

Way 3. utilisez SpannableString dans le code.

TextView tv_html = (TextView) findViewById(R.id.tv_html); 
SpannableString ss = new SpannableString("google: link to google"); 
ss.setSpan(new URLSpan("https://www.google.com.hk"), 8, 22, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 

tv_html.setText(ss); 
tv_html .setMovementMethod(LinkMovementMethod.getInstance()); 

Modifier

Il peut faire défiler mais pas montrer l'....

Vous pouvez ajouter

android:scrollbars="vertical" 
+0

si vous ne définissez pas maxLines, comment limitez-vous le texte? J'ai un bloc de texte que je veux montrer au plus 5 lignes ... c'est un texte riche (avec html) donc j'ai besoin d'utiliser fromHtml pour le rendre accessible – aviran

+0

J'ai vérifié beaucoup d'informations et essayé plusieurs fois. '...' ne s'affiche pas. @ aviran – KeLiuyue

0

Essayez ce code.

  <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="@color/white" 
      android:textStyle="bold" 
      android:textSize="20dp" 
      android:id="@+id/txtTitle" 
      android:text="" /> 

      String message="<font color='gray'>"+"YOUR CONTENT"+ "<br>" +"<font color='cyan'>"+"<font size='5'>"+" "+"</font>"; 
      txtTitle.setBackgroundColor(Color.TRANSPARENT); 
      txtTitle.setText(message);