Autore Topic: ListActivity con lista centrata e a 3 colonne  (Letto 641 volte)

Offline omix

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
ListActivity con lista centrata e a 3 colonne
« il: 10 Settembre 2011, 10:37:28 CEST »
0
Ciao ragazzi,
ho creato un'Activity che estende TabActivity e al suo interno, topo le tab Widget, richiama una ListActivity personalizzata, composta da un messaggio introduttivo e una lista a 3 colonne (allego uno screenshot).
Purtroppo non riesco a fare in modo che la lista, se corta, sia al centro delo spazio rimanente dopo il messaggio introduttivo. Inoltre non riesco ad allenare a sinistra la terza colonna. È possibile sistemare questi problemi? Sopratutto l'allineamento errato della 3a colonna è fastidioso...
Inoltre le TabWidget che vorrei, non dovrebbero contenere icone, quindi lo spazio vuoto che rimane sopra il testo non mi piace granchè.
Ho tentato per 2 giorni di risolvere questi problemi ma non c'è stato verso. Di seguito incollo il codice xml che ho usato per la ListActivity e e la singola riga dell'elenco.
Grazie in anticipo :-)

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

        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:orientation="vertical" android:gravity="center"
                android:layout_width="match_parent" android:layout_height="wrap_content">
                <TextView android:layout_gravity="center"
                        android:layout_width="match_parent" android:layout_height="wrap_content"
                        android:text="Choose one of the following planned activities" />
        </LinearLayout>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:orientation="vertical" android:gravity="center"
                android:layout_width="match_parent" android:layout_height="wrap_content">
                <ListView android:id="@android:id/list" android:layout_width="match_parent"
                        android:layout_height="wrap_content" android:drawSelectorOnTop="false" />


        </LinearLayout>
</LinearLayout>


Singola riga:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:gravity="center" android:stretchColumns="1">

        <TableRow android:gravity="left" android:layout_width="match_parent"
                android:layout_height="match_parent">
                <TextView android:id="@android:id/text1" android:gravity="left"
                        android:layout_column="0" android:layout_width="wrap_content"
                        android:layout_height="match_parent" android:layout_marginLeft="6dip"
                        android:layout_marginTop="6dip" />
                <TextView android:id="@android:id/text2" android:gravity="left"
                        android:layout_column="1" android:layout_width="wrap_content"
                        android:layout_height="match_parent" android:layout_marginLeft="6dip"
                        android:layout_marginTop="6dip" android:layout_marginRight="6dip"
                        android:layout_toRightOf="@android:id/text1" />
                <TextView android:id="@+id/activityTypeColumn"
                        android:layout_column="2" android:gravity="left"
                        android:layout_width="wrap_content" android:layout_height="match_parent"
                        android:layout_marginLeft="6dip" android:layout_marginTop="6dip"
                        android:layout_marginRight="6dip" />
        </TableRow>
</TableLayout>

Offline Verandi

  • Moderatore
  • Utente normale
  • *****
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:ListActivity con lista centrata e a 3 colonne
« Risposta #1 il: 10 Settembre 2011, 16:59:37 CEST »
0
Nel primo file:
- toglierei gli xmlns superflui (Tutti tranne il primo, quindi)
- Aggiungerei un layout_weight al secondo linearLayout e magari anche al primo (sebbene teoricamente superfluo).
- Soprattutto: cambierei l'altezza del secondo linearLayout con match_parent.
- Imposterei la gravity sulla listview e non sul layout che la contiene.

Se ho scritto tutto giusto dovrebbe funzionare.  :-)
Se funziona, l'errore è cercare di centrare una view in un'altra view con attributi wrap_content (dipendentemente dalla direzione del "centraggio". Fammi sapere!  ;-)

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

        <LinearLayout
                android:orientation="vertical" android:gravity="center"
                android:layout_width="match_parent" android:layout_height="wrap_content"
               android:layout_weight="0">
                <TextView android:layout_gravity="center"
                        android:layout_width="match_parent" android:layout_height="wrap_content"
                        android:text="Choose one of the following planned activities" />
        </LinearLayout>
        <LinearLayout
                android:orientation="vertical"
               android:layout_weight="0"
                android:layout_width="match_parent" android:layout_height="match_parent">
                <ListView android:id="@android:id/list" android:layout_width="match_parent"
                       android:layout_gravity="center_vertical"
                        android:layout_height="wrap_content" android:drawSelectorOnTop="false" />


        </LinearLayout>
</LinearLayout>

Per la riga, vedo che comunque la terza colonna ha 12dp di padding left (6 suoi e 6 della textView in mezzo). Secondo me dovresti colorare la textview in mezzo e quella a destra per vederne limiti e margini ed identificare il problema.
« Ultima modifica: 10 Settembre 2011, 17:07:37 CEST da Verandi »