web-dev-qa-db-fra.com

Comment utiliser Android: maxWidth?

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.

24
PEK

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.

28
Sam