Android: alignement vertical pour EditText sur plusieurs lignes (zone de texte)


232

Je veux avoir 5 lignes pour la hauteur de la zone de texte. J'utilise le code suivant.

<EditText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:singleLine="false"
    android:lines="5"
    android:layout_marginLeft="10dip"
    android:layout_marginRight="10dip" />

La zone de texte semble correcte, mais le problème est que le curseur clignote au milieu du champ de texte. Je veux qu'il clignote à la première ligne, au premier caractère du champ de texte.


15
essayez de supprimer votre "centre" de gravité, pourrait être le problème
Sephy

Réponses:



99

Ceci est similaire à la réponse CommonsWare mais avec un mineur tweak: android:gravity="top|start". Exemple de code complet:

<EditText
    android:id="@+id/EditText02"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:lines="5"
    android:gravity="top|start"
    android:inputType="textMultiLine"
    android:scrollHorizontally="false" 
/>

8
N'utilisez pas top|leftsauf si vous savez que vous pouvez contrôler toutes les langues de votre application, il existe de nombreuses langues de droite à gauche ( en.wikipedia.org/wiki/Right-to-left ) Gardez-le convivial pour la localisation
MariusBudin

1
@MariusBudin Vraisemblablement, top|startserait la bonne alternative?
ban-geoengineering

19

Vous pouvez utiliser cet Edittext .... Cela vous aidera.

<EditText
android:id="@+id/EditText02"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:lines="5"
android:gravity="top|left"
android:inputType="textMultiLine" />


6
<EditText android:id="@+id/EditText02" android:layout_width="120dp"
    android:layout_height="wrap_content" android:lines="5" android:layout_centerInParent="true"
    android:gravity="top|left" android:inputType="textMultiLine"
    android:scrollHorizontally="false" android:minWidth="10.0dip"
    android:maxWidth="180dip" />

ça va marcher


3

Maintenant, une utilisation quotidienne de la gravité startest le meilleur choix:

android:gravity="start"

Pour EditText (zone de texte):

<EditText
    android:id="@+id/EditText02"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:lines="5"
    android:gravity="start"
    android:inputType="textMultiLine"
/>

Pouvez-vous nous expliquer pourquoi cela fonctionne? Je me serais attendu startà avoir travaillé comme left(pour les langues occidentales), c'est-à-dire à n'affecter que la gravité horizontale, mais il semble aussi faire le travail de top.
ban-geoengineering

Oui, tu as raison. Nous l'utilisons principalement pour le support RTL. Comme en langue arabe, c'est aller à droite, au lieu de gauche. Et c'est aussi ce topque vous avez déjà demandé. En général, nous commençons à écrire à partir du côté supérieur gauche, c'est pourquoi cela présente STARTégalement les mêmes caractéristiques. @ ban-geoengineering
Hasib Akter

2

Je pense que vous pouvez utiliser à la layout:weight = 5place, android:lines = 5car lorsque vous portez votre application sur un appareil plus petit - elle le fait bien .. eh bien, les deux attributs accompliront votre travail ..

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.