2010-03-08 1 views
12

Ho il seguente schema definito per una delle mie attività:Come posso fare in modo che Views riempia tutta la larghezza del genitore nella mia app per Android?

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout android:id="@+id/TableLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> 
    <TableRow android:id="@+id/TableRow01" android:layout_height="wrap_content" android:layout_width="fill_parent"> 
     <EditText android:text="Resource Name" android:id="@+id/ResourceName" android:lines="1" android:isScrollContainer="false"></EditText> 
    </TableRow> 
    <TableRow android:id="@+id/TableRow02" android:layout_height="wrap_content" android:layout_width="fill_parent"> 
     <Button android:id="@+id/Tile" android:text="Tile"></Button> 
    </TableRow> 
</TableLayout> 

La disposizione rende quasi correttamente, l'unico problema è che la mia casella di testo e il mio pulsante non stanno occupando l'intera larghezza delle rispettive righe.

Ho provato a specificare fill_parent per le proprietà di larghezza del layout, ma senza alcun risultato, occupano ancora solo circa metà dello schermo.

La documentazione complessiva per Android finora è stata eccezionale, ma ci sono alcuni scenari come questo in cui ho colpito un muro invisibile! Grazie per tutto l'aiuto!

risposta

38

Provare a utilizzare android:stretchColumns="0" (quando si definisce il TableLayout) o quale mai è l'indice della colonna che si desidera allungare.

Per ulteriori informazioni - http://developer.android.com/guide/tutorials/views/hello-tablelayout.html

+3

Ah, guardando in su nella API, il valore "*" (o un elenco delimitato da virgole di colonne a partire da 0) lavorate. Grazie! –

9

Prova questa nella definizione del vostro TableRow:

<TableLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:stretchColumns="1"> 
+1

Sembra che l'indice delle colonne inizi a 0, ma sì, è questo! Mi scuso, vorrei poter scegliere due risposte corrette;) –

6

Usa android:layout_width="match_parent" nelle viste TableRow.

Ora avete diverse possibilità nel TableLayout seting il parametro android:stretchColumns a:

Value "*" viste avranno stessa larghezza e riempirà la fila che occupano lo stesso spazio

Value "0" or other integer -> Prima o elemento corrispondente al intero di una riga riempirà la riga. L'altra vista avrà larghezza in uno stesso modo di wrap_content

Esempio con TableLayout di 3 TableRow con 2 viste ciascuno:

Senza modificando android:stretchColumns:

[|TextView|EditText|   ] 
[|TextView|EditText|   ] 
[|TextView|EditText|   ] 

android: stretchColumns = "*"

[| TextView | EditText |] 
[| TextView | EditText |] 
[| TextView | EditText |] 

android: stretchColumns = "0"

[| TextView  |EditText|] 
[| TextView  |EditText|] 
[| TextView  |EditText|] 

android: stretchColumns = "1"

[|TextView|  EditText |] 
[|TextView|  EditText |] 
[|TextView|  EditText |]