J'ai la mise en page suivante qui ne fonctionne pas:
<LinearLayout
Android:orientation="horizontal"
Android:layout_width="match_parent"
Android:id="@+id/experienceLayout"
Android:background="#ffffff"
Android:layout_height="match_parent"
Android:paddingLeft="6dp"
Android:paddingRight="6dp"
Android:paddingBottom="6dp"
Android:paddingTop="6dp">
<TextView
Android:layout_weight="1"
Android:id="@+id/experienceLabel"
Android:text="Experience"
Android:layout_height="wrap_content"
Android:textColor="#000000"
Android:layout_width="wrap_content"
Android:textStyle="bold">
</TextView>
<TextView
Android:id="@+id/experienceTextView"
Android:text="TextView"
Android:layout_height="wrap_content"
Android:textColor="#000000"
Android:layout_width="wrap_content"
Android:ellipsize="end"
Android:lines="1"
Android:maxLines="1"
Android:singleLine="true"
Android:fadeScrollbars="false">
</TextView>
</LinearLayout>
C'est un problème commun. Essayez d'utiliser ce qui suit:
Android:scrollHorizontally="true"
Android:ellipsize="end"
Android:maxLines="1"
.............. le scrollHorizontally est la "sauce spéciale" qui le fait fonctionner.
Cela fera aussi une seule ligne avec ellipsise
Android:singleLine="true"
Utilisez ceci
Android:ellipsize="end"
Android:singleLine="true"
Ne l'utilisez pas sans avoir pleinement conscience de la sortie
Android:ellipsize="end"
Android:maxLines="1"
Lorsque vous utilisez maxlines = 1
, la plupart des caractères seront tronqués.
La façon dont cela a fonctionné pour moi sur plusieurs périphériques/API était comme cela par programme (où tv est votre TextView):
if (tv.getLineCount() > 1) {
int lineEndIndex = tv.getLayout().getLineEnd(0);
String text = tv.getText().subSequence(0, lineEndIndex - 3) + "\u2026";
tv.setText(text);
}
Toutes les réponses ci-dessus répondent donc à l'exigence selon laquelle une seule ligne, puis les Ellipsis doivent apparaître. Cependant, si vous souhaitez que les ellipses apparaissent après certaines lignes de texte, utilisez les éléments suivants:
Android:ellipsize="end"
Android:maxLines="2"
Android:singleLine="false"
Avec cela, les Ellipsis n'apparaîtront qu'après 2 lignes. Remarque: Il est important que singleLine soit défini sur false.