2010-06-01 14 views
6

Je rencontre des difficultés pour positionner les éléments de disposition. La saisie semi-automatique dans mon TableLayout et le bouton après lui agrandissent le TableRow plus grand que la largeur de l'écran. Quelqu'un a une idée pourquoi? Ci-dessous est mon code XML ainsi qu'une image du problème.Android - Les éléments de l'interface utilisateur disparaissent de l'écran

Merci d'avance !!

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

Cela ressemble-t-il également à cela sur un périphérique réel? –

Répondre

5

Par défaut, les widgets dans un TableRow ont android:layout_width="wrap_content". Cela ne vous limite pas à la taille de l'écran - wrap_content signifie "envelopper le contenu", pas "envelopper le contenu, mais s'il vous plaît ne pas sortir du bord de l'écran, si cela ne vous dérange pas".

Dans ce cas, vous n'avez pas besoin d'utiliser un TableLayout et un ensemble de TableRows, puisque vous n'avez pas de table. Donc, une approche consiste à utiliser un RelativeLayout et d'utiliser votre AutoCompleteTextViewandroid:layout_alignParentLeft="true" et android:layout_alignParentRight="true". Cela va l'épingler aux bords extérieurs du RelativeLayout, que vous pouvez dimensionner avec android:layout_width=fill_parent pour remplir l'écran.

+0

Désolé, le code de la table a été supprimé. J'ai un TableLayout défini, avec l'orientation définie sur vertical et fill_parent pour les deux layout_width et layout_height. Des idées? – Ryan

+1

Mes idées sont ci-dessus. Si vous ne faites rien pour indiquer à l'AutoCompleteTextView de rester dans les limites de l'écran, il ne restera pas dans les limites de l'écran. Une façon de le faire est avec le 'RelativeLayout' comme je l'ai décrit ci-dessus. – CommonsWare

+0

Peu importe, cela a beaucoup aidé! Semble avoir travaillé :) Merci !! – Ryan

38

Pour ceux qui ont besoin de la disposition de la table, utilisez l'option layout_weight. Voir le code ci-dessous.

 <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

ça marche !!! merci ... – Irshu

+0

Génial ... Cela fonctionne très bien. Votez pour cela. –