Je veux définir une largeur maximale d'une zone d'édition. J'ai donc créé cette petite mise en page:
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:maxWidth="150dp" >
<EditText
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:ems="10" />
</LinearLayout>
Mais cela ne fonctionne pas, la boîte pourrait être supérieure à 150 dp de toute façon. Android:maxWidth="150dp"
dans le EditText
donnera le même résultat. J'ai lu ( maxWidth ne fonctionne pas avec fill_parent ) que le réglage de la largeur maximale et minimale à la même taille devrait le résoudre:
<EditText
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:ems="10"
Android:maxWidth="50dp"
Android:minWidth="50dp" />
Mais ce n'est pas le cas.
J'ai trouvé une solution à mon problème ici: Définition d'une largeur maximale sur un ViewGroup Et cela fonctionne très bien. Mais je suppose que l'attribut maxWidth
est ici pour la bonne raison. Comment doit-il être utilisé? Ou existe-t-il une documentation à ce sujet? J'ai passé des heures sur ce problème et je ne comprends toujours pas comment utiliser cet attribut simple.
Je veux définir une largeur maximale d'une zone d'édition.
Dans votre exemple:
<EditText
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:ems="10" />
Le layout_width
et ems
attributs tentent de définir la même valeur. Android semble choisir le plus grand fill_parent
valeur et ignore l'autre. Et quand vous l'utilisez:
<EditText
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:ems="10"
Android:maxWidth="50dp"
Android:minWidth="50dp" />
Ici, ems
et maxWidth
tentent de définir la même valeur, là encore la plus grande valeur est utilisée. Donc, selon ce que vous voulez réellement, vous pouvez utiliser:
<EditText
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:ems="10" />
ou remplacez Android:ems="10"
avec Android:maxWidth="50dp"
si vous préférez travailler avec dp.
Enfin, votre LinearLayout n'a qu'un seul enfant, le EditText. En règle générale, lorsque cela se produit, vous pouvez supprimer les balises LinearLayout et utiliser le EditText seul.