web-dev-qa-db-fra.com

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

J'ai une EditText et une Button placées l'une à côté de l'autre sur la même ligne horizontale. Cela a l'air génial, sauf lorsque l'utilisateur entre beaucoup de texte, la EditText est redimensionnée et la Button est écrasée.

EditText et Button sont définis sur layout_width="wrap_content". "fill_parent" gâche la mise en page, et je ne veux pas utiliser de tailles absolues si je ne suis pas obligé - la façon dont elle est maintenant belle en paysage et en portrait, je ne veux tout simplement pas que la EditText soit redimensionnée.

Ma mise en page:

<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>
48
alex_c

Pour utiliser EditText

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

Et pour le bouton ne spécifiez pas Android:layout_weight

87
bhatt4982

Ce que je fais est dans onCreate pour l'activité, mesurez d'abord l'EditText puis appliquez sa maxWidth. 

Vous pouvez le faire en utilisant un code similaire à celui-ci:

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

Donnez EditText une maxWidth. Cela devrait empêcher le redimensionnement au-delà de la largeur fournie. De même, si vous souhaitez qu'il soit contenu dans une ligne, définissez le paramètre maxLines sur 1 également.

5
Prashast

Il suffit d'utiliser:

Android:layout_width="fill_parent"

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

2
Kamen

 enter image description here

Vous devez ajouter Android: imeOptions pour empêcher ce problème.

Cliquez ici

2
Dhina k

vous pouvez définir la taille de votre edittext 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 souhaitée 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"
1
Android developer

Pour ce faire, il convient de définir les paramètres Android: minWidth et Android: maxWidth égaux à la largeur souhaitée. De cette façon, vous n’aurez pas à ajuster votre mise en page pour utiliser Android: layout_weight.

Par exemple, si vous voulez que votre EditText ait toujours une densité de 80 pixels, quel que soit le nombre de caractères que vous tapez, utilisez ce qui suit:

Android:minWidth="80dp"
Android:maxWidth="80dp"

La solution choisie fonctionne, mais permettez-moi d'ajouter un petit complément:
si vous utilisez Android:layout_weight="0.15" (la valeur n'est pas importante)
puis
Android:layout_width="0dp" si la LinearLayout est horizontale
ou
Android:layout_height="0dp" si la LinearLayout est verticale.

0
josedacruz

J'ai eu la requête exacte. Mais j'avais un EditText et un bouton côte à côte dans une disposition linéaire . J'ai essayé Android: layout_weight = "1" pour EditText .__ Android: layout_width = "0dp" Et cela a fonctionné parfaitement! Merci beaucoup! 

0
Shruti Dasgopal

J'ai eu un problème similaire, mais je ne pouvais pas obtenir ce qui précède au travail. Ce que j’ai fait, c’est de saisir le texte de la boîte EditText, puis de le formater à la taille maximale que mon écran pouvait gérer. Lorsque je sauvegarde ceci dans la base de données, je le sauvegarde en tant que texte d'affichage et texte original.

Si vous allez sur cette page je mets une explication plus longue.

0
Aaron