2013-08-27 1 views
1

Bon après-midi.L'ellipse TextView disparaît sur setText()

Je le TextView suivant:

<TextView android:id="@+id/keypadwidget_number" 
    android:tag="@string/phone_number_tag" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_centerVertical="true" 
    android:textSize="30sp" 
    android:ellipsize="start" 
    android:scrollHorizontally="true" 
    android:gravity="right" 
    android:singleLine="true" 
    android:textColor="@color/widget_text" 
    android:layout_toLeftOf="@+id/keypadwidget_btn_delete"/> 

Mon résultat attendu est d'avoir les éléments suivants:

...99862214 

Mais au lieu, je reçois:

enter image description here

Désolé pour la couleur de fond/texte. Pas mon choix!

Chacun de ces boutons d'appel:

mPhoneNumberTextView.append(clickValue); 

Ma question est; Qu'est-ce que je fais mal?

EDIT: Quand je mets Android du TextView: propriété de texte à quelque chose de très long, l'ellipse est définie comme prévu. C'est quand mPhoneNumberTextView.append(clickValue); est exécuté qu'il casse.

+0

Je remarque que cela arrive à moi. La seule solution de contournement que j'ai trouvée consiste à utiliser l'attribut maxLength pour spécifier le nombre maximal de caractères autorisés à remplir le textView. Avez-vous également essayé de définir la longueur de textView à match_parent? –

+0

Merci pour votre réponse. La solution maxLength n'est pas utile car je souhaite laisser l'utilisateur entrer du texte de n'importe quelle longueur. De plus, j'ai essayé de changer layout_width en match_parent mais ce n'est pas non plus utile. – OrhanC1

+0

Hmm. En regardant un code que j'ai qui fonctionne, je vois que j'ai également ajouté l'attribut android: maxlines = "1". Essayez d'ajouter cela et en supprimant l'android: singleLine = "true" et voir si cela fonctionne –

Répondre

0

Dans un accès de rage, j'ai ajouté un drawable à la gauche de la vue du texte chaque fois qu'il a été marqueed.

private boolean isMarqueed(TextView tv){ 
     return isMarqueed(tv.getText().toString(), mPhoneNumberTextView.getWidth(), mPhoneNumberTextView); 
    } 

    private boolean isMarqueed(String text, int textWidth, TextView tv) { 
     Paint testPaint = new Paint(); 
     testPaint.set(tv.getPaint()); 
     boolean isMarquee = true; 
     if (textWidth > 0) { 
      int availableWidth = (int) (textWidth - tv.getPaddingLeft() - tv.getPaddingRight()-testPaint.measureText(text)); 
      if(availableWidth > 0) 
       isMarquee = false; 
     } 
     return isMarquee; 
    } 

Ce qui est une légère variation de How to check if a TextView String has been trimmed (marquee)?

0

Utilisez android:layout_width="fill_parent" pour votre TextView