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>
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
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());
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.
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.
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"
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)
puisAndroid:layout_width="0dp"
si la LinearLayout
est horizontale
ouAndroid:layout_height="0dp"
si la LinearLayout
est verticale.
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!
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.