2011-06-20 3 views
4

Je suis complètement bloqué en essayant d'obtenir des widgets EditType de largeur fixe dans un TableRow. Je tente de placer deux EditText côte à côte avec une largeur égale (environ 20dip), mais peu importe la propriété que j'essaie et définir le premier EditText est trop long et ne peut apparemment pas être redimensionné.Android fixe largeur EditText dans TableRow

Un grand merci:

<TableRow 
    android:layout_height="wrap_content" 
    android:baselineAligned="false" 
    android:id="@+id/tableRow3" 
    android:gravity="center" 
    android:stretchColumns="1" 
    android:layout_width="match_parent"> 
    <TextView 
    android:id="@+id/textView6" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="1" 
    android:paddingLeft="36dip"> 
    </TextView> 
    <EditText 
    android:layout_height="wrap_content" 
    android:id="@+id/editText2" 
    android:inputType="number" 
    android:layout_width="20dip"> 
    </EditText> 
    <EditText 
    android:layout_height="wrap_content" 
    android:id="@+id/editText1" 
    android:inputType="number" 
    android:layout_width="wrap_content"> 
    <requestFocus></requestFocus> 
    </EditText> 
</TableRow> 
+0

Phil, veuillez marquer une réponse comme correcte si elle a répondu à votre question :) Merci! – Codeman

+0

Désolé, le marquage est maintenant – Phil

Répondre

15

Phil,

Je ne sais pas que TableLayout est la meilleure façon de ce faire, il peut être lourd à moins que vous afficher de grandes quantités de données et besoin de l'utiliser. L'un des meilleurs moyens que j'ai trouvé pour m'assurer que les objets de formulaire ont la longueur distribuée comme je le veux est d'utiliser le poids plutôt que de déclarer explicitement la largeur.

les opérations suivantes:

<LinearLayout ... android:orientation="horizontal" ... 
android:layout_width="match_parent" android:layout_height="wrap_content" 
<TextView ... android:layout_width="0dp" ... android:layout_weight="50" /> 
<TextView ... android:layout_width="0dp" ... android:layout_weight="50" /> 
</LinearLayout> 

Assurez-vous de déclarer la largeur de mise en page 0, cela permettra la mise en page de remplir au poids.

Cela devrait créer deux TextView l'un à côté de l'autre sur l'écran, les deux remplissant 50% de l'écran. Vous pouvez jouer avec des pourcentages différents. Vous pouvez également utiliser un LinearLayout comme espace réservé avec un pourcentage de% que vous souhaitez placer. Assurez-vous que vos "poids" totalisent 100 afin de vous assurer que la vue sera exactement comme vous le souhaitez.

Espérons que cela aide.

+0

Un grand merci pour la réponse, j'ai essayé ceci pour EditText qui est les composants que j'essaye de placer et cela ne fonctionne pas. Je pense que je peux manquer quelque chose de fondamental pour être honnête. Je vais revenir aux tutoriels et les parcourir. merci pour la réponse si :) – Phil

+0

Vous ne savez pas pourquoi Pheonixblade règle le poids à 50, mais si vous déclarez la largeur 0 et utilisez le poids comme vous le devriez normalement (avec 1, ou 2 etc) alors il affiche des largeurs de colonnes égales. Si vous définissez la largeur pour dire fill_parent, le contenu de TextView détermine la largeur de la colonne. – ryandlf

+0

Je viens d'utiliser 100 comme weightSum comme un standard pour s'assurer que je sais ce qui se passe, vous pouvez utiliser le poids que vous voulez. :) – Codeman

6

Based on this answer

Ajouter cette annonce sur votre EditText:

android:layout_weight="1" 

Works pour moi.

+0

cela fonctionne et plus simple que la réponse acceptée – zoom