Autore Topic: TableLayout: occupare la larghezza del diplay con contenuto "corto"  (Letto 748 volte)

Offline omix

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
Buonasera,

ho utilizzato il TableLayout per mostrare dei dati su 2 colonne. Per funzionare funziona, però volevo migliorare la situazione, facendo in modo che la prima colonna stia allineata a sinistra, la 2a a destra e la larghezza del display venga occupata per intero, pur se il contenuto delle 2 colonne è piuttosto ristretto.
Ho provato ad innestare il TablerLayout all'interno di un LinearLayout, così:

Codice (XML): [Seleziona]
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
                        android:id="@+id/geographicalStatistics"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:shrinkColumns="1">     
                        <TableRow android:layout_width="match_parent">
                                <TextView android:layout_column="1"
                                        android:layout_gravity="left"
                                        android:text="@string/coveredDistance"
                                        android:padding="3dip" />
                                <TextView android:layout_column="2"
                                        android:id="@+id/coveredDistance"
                                        android:layout_gravity="right"
                                        android:text="0" android:padding="3dip" />
                        </TableRow>
                </TableLayout>
                </LinearLayout>


Il risultato che ottengo è semplicemente una tabella di una riga che occupa un terzo della larghezza del display, e dove finisce il contenuto della 1a colonna, comincia il contenuto della 2a, ovviamente tutto a sinistra. E io che speravo di ottenere il contenuto della 1a tutto a sinistra, il contenuto della 2a tutto a destra del display.
Secondo voi è possibile ottenere quanto esposto? Se si, in che modo?

Grazie in anticipo!

Offline qato

  • Nuovo arrivato
  • *
  • Post: 46
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 5
Re:TableLayout: occupare la larghezza del diplay con contenuto "corto"
« Risposta #1 il: 04 Maggio 2012, 10:03:48 CEST »
0
Prova così ;)

Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TableLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/geographicalStatistics"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <TableRow android:layout_width="fill_parent" >

            <TextView
                android:layout_width="fill_parent"
                android:layout_column="1"
                android:padding="3dip"
                android:text="prima colonna" />

            <TextView
                android:id="@+id/coveredDistance"
                android:layout_width="fill_parent"
                android:layout_column="2"
                android:layout_weight="1"
                android:gravity="right"
                android:padding="3dip"
                android:text="seconda colonna" />
        </TableRow>
    </TableLayout>

</LinearLayout>

Offline omix

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
Re:TableLayout: occupare la larghezza del diplay con contenuto "corto"
« Risposta #2 il: 11 Maggio 2012, 09:41:34 CEST »
0
Ciao Qato!
Scusa il super-ritardo ma ho avuto delle giornate incredibilmente incasinate e ho dovuto abbandonare temporaneamente l'applicazione. Stamattina ho provato a fare come mi hai suggerito (a parte mettere match_parent anzichè fill_parent, che se ben ricordo le linee guida dicono di abbandonare).
Spero di aver fatto tutte le opportune modifiche, ma purtroppo il problema persiste :-(

Offline pivoide

  • Utente junior
  • **
  • Post: 133
  • Respect: +19
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy tab 10.1
  • Play Store ID:
    codicerosso
  • Sistema operativo:
    Ubuntu 11.04
Re:TableLayout: occupare la larghezza del diplay con contenuto "corto"
« Risposta #3 il: 11 Maggio 2012, 11:20:20 CEST »
0
Usa il relative che è molto più flessibile. Così dovrebbe andare:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:id="@+id/mainLayout"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent" >

        <TextView
           android:id="@+id/sinistra"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentLeft="true"
           android:layout_alignParentTop="true"
           android:text="Sinistra" />

        <TextView
           android:id="@+id/destra"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentRight="true"
           android:layout_alignParentTop="true"
           android:text="Destra" />

    </RelativeLayout>
Odio l'inglese e per un informatico non è il massimo

Offline omix

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
Re:TableLayout: occupare la larghezza del diplay con contenuto "corto"
« Risposta #4 il: 11 Maggio 2012, 16:20:00 CEST »
0
Ciao Pivoide,
grazie del suggerimento. A suo tempo avevo preso in considerazione il RelativeLayout, ma poi ho preferito il TableLayout poichè ho molte righe (~15), e probabilmente aumenteranno un po', quindi era scomodo specificare l'id sia per i campi numerici che verranno modificati a runtime (e che quindi van bene specificati) che per le relative etichette (campi della 1a colonna).
Se non dovessi risolvere con TableLayout cmq temo dovrò passare proprio a questa soluzione...

Offline qato

  • Nuovo arrivato
  • *
  • Post: 46
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 5
Re:TableLayout: occupare la larghezza del diplay con contenuto "corto"
« Risposta #5 il: 12 Maggio 2012, 11:50:00 CEST »
0
Spero di aver fatto tutte le opportune modifiche, ma purtroppo il problema persiste :-(

Ciao omix
strano, ho provato sull'editor UI di Eclipse e mi lavorava correttamente... riepilogo le principalmente le differenze, rispetto al tuo layout:

a. Ho rimosso android:layout_gravity="center" e android:shrinkColumns="1" dal TableLayout
b. Tolto layout_gravity a left sulla prima TextView mettendo il layout_width a fill_parent
c. Aggiunto gravity a right sulla seconda TextView, android:layout_width="fill_parent", android:layout_weight="1" e android:gravity="right" sulla seconda

Ciao :)