Android: TextView truncar e substituir último 3 de char da corda automaticamente

StackOverflow https://stackoverflow.com/questions/1666736

  •  13-09-2019
  •  | 
  •  

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.

Foi útil?

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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top