Sous Android, j'utilise un edittext simple ligne avec gravité définie au centre. Dans l'émulateur, cela fonctionne très bien à la fois. Un curseur clignotant apparaît. Lors du test sur un périphérique (Xperia X10), ni le texte de conseil ni le curseur clignotant n'apparaissent. Le curseur clignotant ne montre que si je saisis du texte dans le texte.
Ceci est mon edittext, quelqu'un peut-il voir s'il manque quelque chose?
<LinearLayout
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:gravity="center"
Android:layout_gravity="center"
>
<EditText
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:inputType="numberDecimal"
Android:ellipsize="end"
Android:maxLines="1"
Android:gravity="center"
Android:layout_gravity="center"
Android:hint="Some hint text"
></EditText>
</LinearLayout>
Ce que je veux:
Ce que je reçois avec le code ci-dessus (edittext vide sans curseur):
J'ai finalement trouvé la solution pour le faire fonctionner. Cet EditText fonctionne pour moi: (testé sur Sony Ericsson X10 et HTC Wildfire)
<EditText
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:inputType="numberDecimal"
Android:digits="0123456789.,"
Android:ellipsize="start"
Android:maxLines="1"
Android:gravity="center"
Android:hint="Some hint text"
></EditText>
je pense que vous devriez définir la gravité de la parentLayout de votre EditText, sur center
MODIFIER :
<LinearLayout
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:gravity="center_horizontal"
Android:id="@+id/linearLayout">
<EditText
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:inputType="numberDecimal"
Android:ellipsize="end"
Android:maxLines="1"
Android:hint="Some hint text"/>
</LinearLayout>
J'espère que ce n'est pas trop tard. Je suis tombé sur ce problème et je ne sais pas s'il est identique pour tous les périphériques, mais il apparaît EditText
par défaut, le remplissage inférieur .
Ma valeur de texte EditText semblait toujours être légèrement au-dessus du centre, malgré le fait que la gravité ait été définie sur CENTER
, de sorte que j'ai également défini:
myEditText.setPadding(0, 0, 0, 0);
Cela a résolu le problème pour moi, maintenant mon EditText est parfaitement centré: D
XML:
<EditText Android:id="@+id/email"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:hint="EMAIL"
Android:textStyle="bold"
Android:gravity="center_horizontal"
Android:inputType="textEmailAddress"
Android:layout_margin="10dp"
Android:cursorVisible="false" />
Java:
email.addTextChangedListener(new TextWatcher()
{
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (s.length() > 0) {
// position the text type in the left top corner
email.setGravity(Gravity.LEFT | Gravity.TOP);
email.setCursorVisible(true);
}
else
{
// no text entered. Center the hint text.
email.setGravity(Gravity.CENTER);
email.setCursorVisible(false);
}
}
});
J'ai essayé une combinaison de gravités:
Android:gravity="top|center_horizontal"
Ma tentative précédente consistait à imbriquer l'EditText à l'intérieur d'un RelativeLayout et à le définir au centre, mais cela ne semblait pas très beau, cette méthode fonctionnait mieux pour moi.