Question

J'ai un EditText et un bouton placés l'un à 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, le EditText est redimensionné et le bouton est écrasé.

Les EditText et les boutons sont réglés 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 est superbe en paysage et en portrait, je ne ne voulez pas que le EditText soit redimensionné.

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>
Était-ce utile?

La solution

Pour utiliser EditText

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

Et pour le bouton ne spécifiez pas android: poids du layout

Autres conseils

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

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

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

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

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.

 entrer la description de l'image ici

Vous devez ajouter Android: imeOptions pour éviter ce problème.

Cliquez ici

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 d'arrière-plan 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"

J'ai eu un problème similaire, mais je n'ai pas réussi à faire en sorte que ce qui précède fonctionne. 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 cette information dans la base de données, je l’enregistre en tant que texte d’affichage et texte original.

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

La bonne façon de procéder consiste à définir 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 souhaitez que votre EditText ait toujours une densité de 80 pixels, quel que soit le nombre de caractères que vous tapez, utilisez les éléments suivants:

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

J'ai eu la requête exacte. Mais j'avais un EditText et un bouton côte à côte dans une mise en page linéaire. J'ai essayé android: layout_weight = & 1; " 1 " pour EditText         android: layout_width = " 0dp " Et cela a fonctionné tout simplement parfait !! Merci beaucoup!

La solution choisie fonctionne, mais permettez-moi d'ajouter un petit complément:
si tu utilises android: layout_weight = " 0.15 " (la valeur n'a pas d'importance)

alors
android: layout_width = "0dp" si LinearLayout est horizontal
ou
android: layout_height = "0dp" si LinearLayout est vertical.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top