web-dev-qa-db-fra.com

Android définit la marge/remplissage pour le contenu (texte) au lieu d'un conteneur (EditText)

Ce que je veux faire, c'est ajouter de la marge supérieure/remplissage avant THE TEXT, et non pour le conteneur entier:

Le code est aussi simple que:

<EditText Android:id="@+id/mightyText"
     Android:layout_width="match_parent"
     Android:layout_height="match_parent"
     Android:gravity="left|top"
     Android:inputType="textAutoComplete|textMultiLine"
     Android:paddingLeft="20dp"
     Android:paddingRight="20dp"
     Android:paddingBottom="80dp"
     Android:background="#fff" />

Produit des sorties:

Desired behaviour

Une fois que c'est au top, ça marche très bien. J'ai les mêmes rembourrages pour les côtés et le dessus ...


Naughty padding ;(

... mais quand je fais défiler, le rembourrage reste collé au conteneur au lieu de remonter avec le texte


Et c'est comme ça que je voudrais que ce soit (quand on ne fait pas défiler vers le haut):

Proper behavior

Comment puis-je le changer, de sorte qu'il défile avec le texte au lieu d'être toujours visible?

10
meeDamian

Placez-le dans ScrollView, qui se chargera automatiquement du défilement. EditText ne sera pas responsable de cela, donc son rembourrage fonctionnera comme vous le souhaitez. Essayez le code ci-dessous:

<ScrollView
           Android:layout_width="match_parent"
           Android:layout_height="wrap_content" >

           <EditText Android:id="@+id/mightyText"
               Android:layout_width="match_parent"
               Android:layout_height="wrap_content"
               Android:gravity="left|top"
               Android:inputType="textAutoComplete|textMultiLine"
               Android:paddingLeft="20dp"
               Android:paddingRight="20dp"
               Android:paddingBottom="80dp"
               Android:background="#fff" />

</ScrollView>
19
ezpn

Sur ViewGroup, il existe un attribut appelé clipToPadding. Docs dit: Defines whether the ViewGroup will clip its drawing surface so as to exclude the padding area. This property is set to true by default. Essayez de trouver quelque chose de similaire dans EditText.

0
jmodrako

Est-ce que cela doit être un EditText? Si l'utilisateur ne le modifie pas, utilisez un TextView normal avec un remplissage supérieur de 10dp et enveloppez-le dans un ScrollView.

Pour autant que je sache, il n'y a aucun moyen de définir un remplissage interne au sommet d'un EditText.

0
Lisa Wray