Ho un'attività in cui desidero visualizzare un'intestazione che occupa il quarto superiore dell'app e visualizza un insieme dinamico di testo. In alcuni casi, tutto si adatta a una riga e mi piacerebbe che la dimensione del carattere venisse ridimensionata in modo che fosse grande e facile da leggere. In alcuni casi sarà su più righe (in genere meno di 4) e dovrà essere più piccolo.Dimensionamento di una TextView su più linee Android
La complicazione è che se ho impostato in modo esplicito le nuove righe in setText a volte sarà inserire un ritorno a capo in cui non mi aspettavo uno, vale a dire:
"My first line of text\nMy Second line of text" Might get turned into (it's right adjusted in this version): "My first line of text My second line of text"
io non sono sicuro di come fare per se mantenere il TextView dal tentativo di inserire newline o lasciarlo semplicemente occuparsi della formattazione del tutto. Se imposto del testo come una sola parola molto lunga, inserirò una nuova riga nel mezzo in un punto scelto. Altre volte ho solo casualmente ottenuto le ultime righe di testo.
Devo impostare in modo esplicito la dimensione del carattere in modo che sia veramente piccola per ottenere il layout corretto e quindi regolare manualmente le dimensioni? Esiste una "best practice" che dovrei usare per questo? Se imposto che la dimensione del font sia un carattere abbastanza grande, funziona in qualche modo, ma sarebbe bello capire quale sarebbe il modo "giusto" per farlo. E preferirei non dover aggiungere manualmente 4 TextViews a riga singola e formattarle da solo.
L'XML di layout che sto utilizzando è:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_marginTop="10dip"
android:layout_marginRight="8dip"
android:singleLine="false"
android:ellipsize="marque"
android:gravity="right|bottom"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textSize="30sp"
/>
Umm, non è abbastanza chiaro cosa vuoi fare. Vuoi ridimensionare il testo per riempire una casella di testo? Perché stai aggiungendo newline? Basta impostare la dimensione, inserire il testo e lasciarlo avvolgere. – Falmarri
Che dimensioni metti per far sì che si adatti effettivamente all'intera casella di testo? Se scegli una dimensione troppo grande, TextView decide di tagliare/inserire nuove righe nel testo (e non sono sicuro di come decida). Se si sceglie una dimensione piccola e non si inseriscono nuove linee in sé stesso, è difficile ridimensionarla senza passare praticamente da una dimensione di carattere all'altro e senza doverla ritrasmettere (inserendo nuove righe) ogni volta. Sarebbe bello se impedissi a TextView di fare scherzi con le cose e di ridimensionare/inserire nuove linee tu stesso. – William