49 votes

Comment empêcher un EditText de se redimensionner lorsque l'utilisateur tape ?

J'ai un EditText et un Button placés les uns à côté des autres sur la même ligne horizontale. C'est très bien, sauf que lorsque l'utilisateur saisit beaucoup de texte, l'icône de la barre d'outils est remplacée par celle de la barre d'outils. EditText est redimensionné, et le Button est écrasé.

J'ai les deux EditText et Button réglé sur layout_width="wrap_content" . "fill_parent" perturbe la mise en page, et je ne veux pas utiliser des tailles absolues si je n'y suis pas obligé - la façon dont elle est maintenant est très bien en paysage et en portrait, je ne veux simplement pas que l'option EditText pour redimensionner.

Ma disposition :

<TableLayout
    android:id="@+id/homelayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TableRow>
        <TextView
            android:id="@+id/labelartist"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Find artists:" />
    </TableRow>
    <TableRow>
        <EditText
            android:id="@+id/entryartist"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="6"
            android:background="@android:drawable/editbox_background"
            android:editable="true"
            android:padding="5px"
            android:singleLine="true" />
        <Button
            android:id="@+id/okartist"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginLeft="10dip"
            android:layout_weight="1"
            android:text="Search" />
    </TableRow>

</TableLayout>

88voto

bhatt4982 Points 4648

Pour EditText, utilisez

android:layout_width="0dp" - not required but preferred.
android:layout_weight="1"

Et pour Button ne pas préciser android:layout_weight

0 votes

Merci - cela a fait l'affaire ! Que signifie le "0dp" pour la largeur ? Qu'il doit occuper tout l'espace disponible ?

1 votes

N'oubliez pas d'enlever (si présent) android:stretchColumns="x" dans votre TableLayout où "x" est la position de la colonne qui contient l'élément EditText vous ne voulez pas être redimensionné automatiquement.

0 votes

Le poids pour le bouton ne change rien, mais la largeur 0dp le fait. merci

14voto

Kevin Points 4235

Ce que je fais, c'est que dans le onCreate de l'activité, je mesure d'abord l'EditText puis j'applique sa largeur maximale.

Vous pouvez le faire en utilisant un code similaire au suivant :

EditText someedittext = (EditText)findViewById(R.id.sometextview);
someedittext.setMaxWidth(someedittext.getWidth());

5voto

Prashast Points 4064

Donnez EditText a maxWidth . Cela devrait l'empêcher de se redimensionner au-delà de la largeur que vous avez indiquée. De plus, si vous souhaitez que le texte soit contenu dans une seule ligne, définissez l'attribut maxLines à 1 également.

3 votes

Merci - Je ne veux pas vraiment coder en dur une largeur maximale spécifique, car elle ne serait pas la même pour différentes orientations ou tailles d'écran.

2voto

Kamen Points 2462

Il suffit d'utiliser :

android:layout_width="fill_parent"

pour l'EditText et le Button. Il fonctionnera également pour l'EditText mais il est préférable de l'avoir sur les deux.

1voto

Android developer Points 116

Vous pouvez définir la taille de votre texte d'édition comme indiqué ci-dessus.

android:minWidth="80dp"
android:maxWidth="80dp"

ou

android:layout_width="60dp"

ou

vous pouvez appliquer une image de fond de la taille que vous voulez mais n'oubliez pas de définir sa hauteur et sa largeur avec wrap_content.

  android:layout_width="wrap_content"
  android:layout_height="wrap_content"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X