2010-03-08 3 views
12

ich folgendes Layout für ein meine Aktivitäten definiert:Wie führe ich Views in meiner Android App in die volle Breite ihres Elternteils?

<?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> 

Das Layout fast richtig ist, das einzige Problem macht, dass mein Textfeld und meine Taste nicht die volle Breite der jeweiligen Reihen zu besetzen.

Ich habe versucht, fill_parent für die Layoutbreite Eigenschaften angeben, aber ohne Erfolg, sie belegen immer noch nur etwa die Hälfte des Bildschirms.

Die gesamte Dokumentation für Android bisher war großartig, aber es gibt ein paar Szenarien wie dieses, wo ich eine unsichtbare Wand traf! Danke für die Hilfe!

Antwort

38

Versuchen Sie, android:stretchColumns="0" (wenn Sie die TableLayout definieren) oder was auch immer ist der Index der Spalte, die Sie dehnen möchten.

Weitere Informationen - http://developer.android.com/guide/tutorials/views/hello-tablelayout.html

+3

Ah, sucht es in der API auf, der Wert "*" (oder eine durch Kommata getrennte Liste von Spalten ausgehend von 0) gearbeitet. Danke! –

9

die Sie interessieren in der Definition Ihrer 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

Es sieht so aus, als ob der Spaltenindex bei 0 beginnt, aber ja, das ist es! Entschuldigung, ich wünschte, ich könnte zwei richtige Antworten wählen;) –

6

Verwenden android:layout_width="match_parent" in Ihrem TableRow Ansichten.

Jetzt haben Sie verschiedene Möglichkeiten in Ihrem Tablelayout haben seting den Parameter android:stretchColumns zu:

Value "*" Ansichten werden gleiche Breite haben und die Reihe zu besetzen den gleichen Raum

Value "0" or other integer füllen -> Erste oder Element mit dem entsprechenden Ganzzahl in einer Zeile füllt die Zeile. Die andere Ansicht wird Breite in einer gleichen Weise von wrap_content

Beispiel mit einem Tablelayout von 3 TableRow mit 2 Ansichten, die jeweils:

Ohne Einstellung 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 |]