Android: TextView truncar e substituir último 3 de char da corda automaticamente
Pergunta
Se um String
é maior do que a largura do TextView
que envolve automaticamente para a próxima linha. I pode evitar isso usando android:singleLine
(reprovado) ou definindo android:inputType="text"
. O que eu preciso agora é algo que substitui os últimos 3 caracteres da minha String
com " ... ". Desde que eu não estou usando uma fonte monoespaçada isso sempre será diferente dependendo das letras usadas na minha String
. Então, eu estou querendo saber qual é a melhor maneira de obter os últimos 3 caracteres de uma String em um TextView
e substituí-los. Talvez já há algo implementadas no quadro Android, uma vez que este deve ser um problema comum.
Solução
Você deve ser capaz de usar a propriedade "ellipsize" de uma exibição de texto:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text_mytext"
android:ellipsize="end"
android:maxLines="1"
/>
Você também pode precisar de aplicar valores de gravidade para o layout também; Tenho visto algumas vezes "auto-alongamento" pontos de vista sem eles.
Outras dicas
Encontrou um trabalho-a-redonda para este problema. Interessante
maxLines=1
ellipsize=end
scrollHorizontally=true
O truque é que a última declaração sobre a rolagem horizontal .... check-out. É, pelo menos, obras sobre v2.2.
programaticamente, você pode usar:
TextView tx = new TextView(this);
tx.setTextSize(13);
tx.setGravity(Gravity.CENTER);
tx.setTop(90);
tx.setText("Long text here");
tx.setTextColor(Color.BLACK);
tx.setSingleLine(true);
tx.setEllipsize(TruncateAt.END);