Blupixel IT Blog – Articoli e Tutorial Informatica e Programmazione

Blog ufficiale di Blupixel IT Srl

Trasformare un testo in una tabella in Android SDK

In Android la gestione della visualizzazione dei testi può essere molto complessa.

Per visualizzare un testo in maniera ordinata, come fosse una tabella, ad esempio, è necessario creare un layout appositamente, con un elemento per ogni cella che si vuole compilare e poi caricare i dati una cella alla volta aggiungendo inoltre un elemento alla view.

Se avessi, però, solo un testo normale in una TextView e volessi renderlo ben allineato su ogni riga in modo che sembri una tabella, puoi usare questo trucco, che sfrutta il calcolo della dimensione delle scritte, per aggiungere tanti spazi quanti necessari per identare correttamente le parti del testo

String lines[] = getItem(position).toString().split("\n");
String print = "";
String parts[] = null;
String tmp = "";
int weight = 0;
for (int i=0; i < lines.length; i++) {
   if (!lines[i].equalsIgnoreCase("")) {
	   parts = lines[i].split(":", 2);
	   tmp = "";
	   Paint textPaint = text.getPaint();
	   float width = textPaint.measureText(parts[0]);
	   float wslength = textPaint.measureText(" ");
	   for (int j = 0; j < (220 - Math.round(width))/Math.round(wslength); j++) {
		   tmp = tmp + " ";
	   }
	   if (print.equalsIgnoreCase("")) {
		   print = print + parts[0] + tmp + Html.fromHtml(""+parts[1]+"");
	   } else {
		   print = print + "\n" + parts[0] + tmp + parts[1];
	   }
   }
}

Nella prima parte separo una stringa in linee separandola sugli a capo, dopo ciclo su ogni riga e se la riga non è vuota creo la riga in versione tabellare.

Separo ogni riga in “celle” dividendo il testo ogni volta che incontro il carattere “:” (in questo caso prevedo 2 celle), quindi prendo la lunghezza visualizzata del testo e aggiungo tanti spazi bianchi quanti ne sono necessari per arrivare ad una lunghezza di 220.

Se prevedete più di due celle dovrete ripetere l’operazione per tutte le celle (ultima esclusa)

Se è la parima riga, la metto in grassetto, come fosse un header.

Così sarà possibile inserire la variabile print in qualunque TextView o AlertDialog, ottenendo un testo con effetto tabella.

Buon lavoro

Your email address will not be published. Required fields are marked *

*

k9AMgr

Please type the text above: