Visualizzazione stampabile
-
TableLayout
Guardando l'esempio del TableLayout di google cioè questo :
ho capito che il TableLayout corrisponde al <table> dell'HTML e che i TableRow corrispondono ai <tr> quindi alle righe, mentre ogni view costituisce i <td> cioè le colonne....quello che non capisco invece è a cosa servono gli attributi android:stretchColumns="1" e nelle View android:layout_column="1"
poi un altra cosa...ma il Tableayout non ha un attributo per far visualizzare i border ??
-
-
Come diceva il mio prof di filosofia: è tutto scritto qui! ;)
Il javadoc di TableLayout recita:
Quote:
android:stretchColumns
Since: API Level
The zero-based index of the columns to stretch. The column indices must be separated by a comma: 1, 2, 5. Illegal and duplicate indices are ignored. You can stretch all columns by using the value "*" instead. Note that a column can be marked stretchable and shrinkable at the same time.
Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.
This corresponds to the global attribute resource symbol stretchColumns.
Ovvero, guardando anche il risultato, la colonna che deve slargarsi per prendere lo spazio che il testo di per sé non copre. In questo caso la colonna 1 che è quella dei comandi. Infatti, anche se non si vede, la colonna con i comandi schiaccia quella dello shortcut e si prende quasi tutta la riga riga.
Per esperimento prova a settare quel valore a 0. A questo punto la prima colonna (quella delle X) "schiaccerà" le altre che finiranno tutte a destra.
Sempre come spiega la documentazione puoi dare a questo parametro anche più valori di colonna per dirne di più di quelle che possono espandersi.
Il layout_column invece sembra un concetto un po' più contorto... nel senso che forza la colonna in cui far apparire il textview, anche a prescindere da quelle presenti.
Fermo restando che la numerazione parte da 0 il numero è arbitrario e solo relativo alle altre posizioni.
Nell'esempio dato da google serve principalmente a lasciare le "X" (che non lo posseggono, quindi hanno valore 0) più a sinistra del resto delle caselle. Se tu assegnassi a uno dei textview un valore 2 questo si sposterebbe necessariamente a destra di tutti i textview con valore inferiore, creando, di fatto, una terza colonna solo per sé.
Attenzione perché non vale dare a un textview scritto successivo nel xml un layout column inferiore a quello precedente. Anzi, nel caso un textview abbia valore 2 come detto sopra, quello successivo (parliamo ovviamente di stessa row) avrà automaticamente valore 3, anche senza dichiarazioni.
Credo tu faccia prima a sperimentare giocando coi valori che a capire cosa ho scritto :p
E per la tua ultima domanda la documentazione recita
Quote:
TableLayout containers do not display border lines for their rows, columns, or cells.
Peccato ;)
-
Sempre molto preciso ed esauriente. Grazie ;)
-
Sempre relativo ai TableLayout.... a me capita che la tabella viene visualizzata correttamente quando metto il telefono in portrait mode, mentre scompare del tutto quando metto il telefono in landscape mode. Qualcuno sa darmi una mano?
-