2010-06-01 11 views
6

Ich habe Probleme beim Positionieren der Layoutelemente. Das AutoComplete in meinem TableLayout und die Schaltfläche danach erweitern das TableRow größer als die Breite des Bildschirms. Jeder hat eine Idee warum? Unten ist mein XML-Code sowie ein Bild des Problems.Android - UI Elemente gehen aus dem Bildschirm

Vielen Dank im Voraus!

<?xml version="1.0" encoding="utf-8"?> 

<TableRow android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <AutoCompleteTextView android:id="@+id/installation" 
     android:textSize="14sp" android:completionThreshold="3" /> 
</TableRow> 
<TableRow android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <Button android:id="@+id/btn_find" android:text="@string/btn_find"></Button> 
</TableRow> 
<TableRow android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <TextView android:id="@+id/error" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:paddingTop="20px" 
     android:textColor="#FF0000" /> 
</TableRow> 

Picture of UI

+0

Sieht es auch so auf einem tatsächlichen Gerät aus? –

Antwort

5

standardmäßig Widgets in einem TableRow haben android:layout_width="wrap_content". Das beschränkt Sie nicht auf die Größe des Bildschirms - wrap_content bedeutet "Inhalt umhüllen", nicht "Inhalt umhüllen, aber bitte nicht über den Rand des Bildschirms gehen, wenn es Ihnen nichts ausmacht".

In diesem Fall müssen Sie keine TableLayout und TableRows setzen, da Sie keine Tabelle haben.

So ein Ansatz ist es, ein RelativeLayout zu verwenden und Ihre android:layout_alignParentLeft="true" und android:layout_alignParentRight="true" verwenden. Das wird es an den äußeren Rändern der RelativeLayout festmachen, die Sie mit android:layout_width=fill_parent Größe füllen können, um den Bildschirm zu füllen.

+0

Entschuldigung, der Tabellencode wurde entfernt. Ich habe eine TableLayout definiert, mit Ausrichtung vertikal und fill_parent für die Layout_width und layout_height festgelegt. Irgendwelche Ideen? – Ryan

+1

Meine Ideen sind oben. Wenn Sie nichts tun, um der AutoCompleteTextView zu sagen, dass sie innerhalb der Bildschirmgrenzen bleibt, wird sie nicht innerhalb der Bildschirmgrenzen bleiben. Ein Weg, dies zu tun, ist mit dem "RelativeLayout", wie ich oben beschrieben habe. – CommonsWare

+0

Nevermind, das hat sehr geholfen! Scheint gearbeitet zu haben :) Danke !! – Ryan

38

Für diejenigen, die das Tabellenlayout benötigen, verwenden Sie die Option layout_weight. Siehe Code unten.

 <TableLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:padding="6sp" android:id="@+id/detailsLayout"> 
      <TableRow 
       android:layout_width="wrap_content" 
       android:id="@+id/TableRow03" 
       android:layout_height="wrap_content"> 
       <TextView 
        android:id="@+id/TextView06" 
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content" 
        android:text="Detail 1"></TextView> 
       <TextView 
        android:text="@string/empty_value" 
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content" 
        android:id="@+id/sessionAudience" 
        android:layout_weight="1"></TextView> 
      </TableRow> 
     </TableLayout> 
+0

es funktioniert !!! danke ... – Irshu

+0

Awesome ... Das funktioniert sehr gut. Up-Stimme dafür. –

Verwandte Themen