Autore Topic: evitare troncamento testo in un tablelayout creato dinamicamente.  (Letto 629 volte)

Offline dr4gone

  • Utente junior
  • **
  • Post: 66
  • Respect: +1
    • Mostra profilo
Ciao a tutti.
ho un fastidioso problema che non riesco a risolvere: per la precisione quello in allegato.

Mi viene troncato il testo nella riga.
Come potrei fare per farlo andare a capo automaticamente?

Codice (Java): [Seleziona]
        public void addNewElement(){

                TableLayout table = (TableLayout) findViewById(R.id.TableLayout);
               
            int i;
                for (i=0 ; i<cont ; i++) {
                TableRow row = new TableRow(this);
               
                TextView [] tv_label = new TextView[k];
                TextView [] tv_valore = new TextView[k];

                tv_label [i]= new TextView(this);
                tv_valore [i]= new TextView(this);

                 
                  tv_label[i].setTextColor(Color.WHITE);
                  tv_label[i].setTypeface(null, Typeface.BOLD);

                  tv_label[i].setText("Data Contabile: " +"\n"+
                                     "Data Valuta: " + "\n"+
                                     "Addebito: " + "\n"+
                                     "Accredito: " +"\n"+
                                     "Descrizione: " +"\n"
                                                              );
                  tv_valore[i].setTextColor(Color.YELLOW);
                  tv_valore[i].setHorizontalScrollBarEnabled(true);
                  tv_valore[i].setText(
                                    DataCont[i].text()+"\n"+
                                                DataVal[i].text()+"\n"+
                                                Addebito[i].text()+"\n"+
                                                Accredito[i].text()+"\n"+
                                                Descrizione[i].text()+"\n"
                                                      );
                 
                 
                  row.addView(tv_label[i]);
                  row.addView(tv_valore[i]);

                if ((i % 2) == 0) {
                          row.setBackgroundColor(Color.DKGRAY);
                        } else {
                                row.setBackgroundColor(Color.BLACK);
                        }
                  table.addView(row,new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                 
                    }
                }

Ho provato ad aggiungere anche .setSingleLine(false) ma non cambia nulla.
Suggerimenti?
« Ultima modifica: 15 Marzo 2012, 08:34:58 CET da dr4gone »

Offline dr4gone

  • Utente junior
  • **
  • Post: 66
  • Respect: +1
    • Mostra profilo
Re:evitare troncamento testo in un tablelayout creato dinamicamente.
« Risposta #1 il: 17 Marzo 2012, 16:56:38 CET »
0
nessun suggerimento?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:evitare troncamento testo in un tablelayout creato dinamicamente.
« Risposta #2 il: 17 Marzo 2012, 17:34:17 CET »
0
nessun suggerimento?

C'è chi dice che occorre usare setColumnShrinkable(0,true) sul tablelayout, ma non ho capito perchè e nemmeno se funziona davvero.  :-( Ha qualcosa a che fare con la dimensione reale della table... provare non nuoce.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline dr4gone

  • Utente junior
  • **
  • Post: 66
  • Respect: +1
    • Mostra profilo
Re:evitare troncamento testo in un tablelayout creato dinamicamente.
« Risposta #3 il: 17 Marzo 2012, 18:13:11 CET »
0
non funziona :(

Distrugge irrimediabilmente ogni forma di tabella creata sino ad ora :)

Stavo pensando ad una altro approccio..

Prendere la stringa, e in qualche modo dividerla ogni 20 caratteri aggiungendo un \n per andare  a capo...

Solo che ho difficoltà a definire come contare i 20 caratteri...

stavo provando con TextUtils ma non riesco a trovare una cosa che faccia quello che chiedo...  >:(

Offline dr4gone

  • Utente junior
  • **
  • Post: 66
  • Respect: +1
    • Mostra profilo
Re:evitare troncamento testo in un tablelayout creato dinamicamente.
« Risposta #4 il: 18 Marzo 2012, 14:25:29 CET »
0
risolto in parte così: 
Codice (Java): [Seleziona]
 row.addView(tv_label[i],new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                  row.addView(tv_valore[i],new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

e in parte agendo sulle stringe con substring .  ;-)

Offline dr4gone

  • Utente junior
  • **
  • Post: 66
  • Respect: +1
    • Mostra profilo
Re:evitare troncamento testo in un tablelayout creato dinamicamente.
« Risposta #5 il: 22 Marzo 2012, 08:52:00 CET »
0
A chi interesasse ho trovato la soluzione ottimale!

cambiando un po il layout delle row cosi:
Codice (Java): [Seleziona]
 row.addView(tv_label[i],new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                  row.addView(tv_valore[i],new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

e aggiungendo alla fine table.setColumnShrinkable(1, true);

Riesco ad ottenere un ottimo risultato.

Grazie bradipao il tuo suggerimento era corretto, bastava solo cambiare la colonna da restringere e  aggiungere nelle righe i parametri WRAP_CONTENT ;-)

Ho capito anche il perchè... Praticamente il setColumnShrinkable forza la colonna che specifichi (in questo caso avevo due colonne 0 e 1) a restringersi il più possibile e a scalare il contenuto (ad esempio una textView) su più righe.

Proprio quello che cercavo...

Si sarebbe potuto usare anche setShrinkAllColumns(true), ma in questo caso non va bene. poichè restringe anche la colonna 0 sfasando l'allineamento dei risultati.