Autore Topic: Cacolare la largezza del testo.  (Letto 479 volte)

Offline vittochan

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Acer Liquid A1
  • Sistema operativo:
    Android 2.2 Froyo
Cacolare la largezza del testo.
« il: 23 Novembre 2010, 16:00:23 CET »
0
Ciao a tutti,
io ho queste esigenze:

  • dimensionare un testo in modo da riempire l'intera lunghezza di un TextView senza ovviamente andare a capo.
  • il testo è composto da stringhe di dimensioni diverse, tipo: 0123456789

Per far questo sto utilizzando un SpannableStringBuilder.
Ottenere un risultato come l'esempio è relativamente semplice.
Quello che non riesco a fare e calcolare la larghezza del testo in pixel. Questo mi serve perché se con le dimensioni standard il testo fosse troppo lungo, devo ridurre le dimensioni dei font per non far andare a capo la stringa.
Googolando ho trovato riferimenti alla funzione Paint.measureText, che effettivamente dovrebbe fare quello che mi serve, ovvero darmi la lunghezza in pixel del testo. Però non fa riferimento alle varie dimensioni dei font che compongono il testo, ma fa riferimento alla dimensione del font della TextView per tutta la stringa.
Ad esempio:

Codice: [Seleziona]
LinearLayout text = (LinearLayout) findViewById(R.id.LinearLayout);

SpannableStringBuilder str = new SpannableStringBuilder("0123456789");
str.setSpan(new RelativeSizeSpan(2f), 3, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

TextView tmp = new TextView(this);
tmp.setText(str,BufferType.SPANNABLE);
text.addView(tmp);

Float dim = tmp.getPaint().measureText(str, 0, str.length()

Se si modifica la dimensione relativa e invece di 2f mettiamo 3f, il risultato della funzione measureText rimane lo stesso.

Avete idea di come possa fare?
Grazie