web-dev-qa-db-fra.com

Android: Edittext avec centre de gravité ne fonctionne pas sur l'appareil

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:

This is what I want

Ce que je reçois avec le code ci-dessus (edittext vide sans curseur):

The edittext doesn't show the hint text and have no blinking cursor

16
Martin

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>
44
Martin

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>
4
Houcine

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

4
Zhang
  • Dans le fichier XML, ajoutez gravité CENTER_HORIZONTAL pour que l'indice soit défini sur Center.CURSORVISIBLE = false afin que le curseur ne soit pas visible lors du premier clic sur .
  • En Java, utilisez addTextChangedListener, lorsque l'utilisateur ajoute du texte au moment où Modifie la gravité en position curseur gauche et visible.

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);
                }
            }
        });
0
user6807363

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.

0
Valer Dragos