81 votes

Désactiver la mise au point automatique sur le texte à modifier

J'ai un texte à modifier :

   <LinearLayout android:id="@+id/linearLayout7" android:layout_width="match_parent" android:layout_height="wrap_content">
        <EditText android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_weight="1" android:id="@+id/editText1" android:text="3">
            <requestFocus></requestFocus>
        </EditText>
        <Button android:text="Button" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/button2"></Button>
    </LinearLayout>

et puis d'autres trucs en dessous

Le problème que j'ai est que lorsque l'application démarre, le focus est sur l'entrée, je ne veux pas que le focus soit sur l'entrée dès le démarrage de l'application.

J'ai essayé de retirer le

<requestFocus></requestFocus>

et ça n'a rien fait.

0 votes

Définissez Android:focusable="false". Il n'y aura pas de focus sur votre EditText

2 votes

Qui rendra le champ inutilisable pour toujours ? maintenant, même si je clique sur le champ de texte, il ne se met pas en évidence. Je veux qu'il soit mis au point quand on clique dessus, mais pas automatiquement au démarrage de l'application.

1 votes

Vous pouvez d'abord commencer par obtenir l'id du bouton et mettre le focus sur le bouton dans votre code....

174voto

Mudassir Points 8017

Ajouter le android:focusable="true" et android:focusableInTouchMode="true" dans la disposition parent de EditText comme suit ;

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout7" android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:focusable="true" android:focusableInTouchMode="true">

Je pense que ça devrait vous aider.

Voir aussi ;
     Guide officiel des développeurs Android sur la gestion du toucher et des entrées

18voto

krishna murthy Points 461

Si vous voulez effacer le focus par défaut sur le texte à éditer, utilisez les 2 attributs suivants

android:focusable="false"
 android:focusableInTouchMode="true"

à l'intérieur de la disposition linéaire parent.

par exemple :

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:focusable="false"
            android:focusableInTouchMode="true"
            android:orientation="vertical">

     <EditText
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:hint="email id"
         android:inputType="textEmailAddress"
         android:maxLines="1"
    />

</LinearLayout>

Si vous souhaitez masquer le clavier lors de la création d'une activité, utilisez ces attributs à l'intérieur de la balise d'activité du fichier manifeste. par exemple :

 <activity
     android:configChanges="screenSize|orientation|keyboardHidden"
     android:screenOrientation="portrait"
     android:name=".activities.LoginActivity"
     android:windowSoftInputMode="stateHidden|adjustResize"/>

Si vous souhaitez masquer le clavier lors d'un clic sur un bouton ou lors d'un événement quelconque, utilisez le code suivant

 public void onClick(View v) {
                try {
                    //InputMethodManager is used to hide the virtual keyboard from the user after finishing the user input
                    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                    if (imm.isAcceptingText()) {
                        imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
                    }
                } catch (NullPointerException e) {
                    Log.e("Exception", e.getMessage() + ">>");
                }
                    }
                } catch (NullPointerException e) {
                    Log.e("Exception", e.getMessage() + ">>");
                }

Si vous voulez retirer le focus des champs de texte à éditer après avoir quitté l'activité

@Override
    protected void onResume() {
        super.onResume();
        mEmail.clearFocus();
        mPassword.clearFocus();
}

Enfin, si vous souhaitez effacer les données des champs de texte lors de la soumission du formulaire, utilisez la fonction

 @Override
    protected void onResume() {
        super.onResume();
        mEmail.getText().clear();
        mPassword.getText().clear();
    }

9voto

Nishanth S Babu Points 111

PAS de travail supplémentaire... il suffit d'ajouter Android:windowSoftInputMode="stateAlwaysHidden" à la balise activity du fichier Manifest.xml .

2 votes

Veuillez expliquer ce que cela fait et comment cela peut aider le PO. Les suggestions sans explication n'aident pas beaucoup, même si la solution peut fonctionner.

0 votes

Référez-vous à ceci le lien ci-dessus .

4 votes

Cela permet de masquer le clavier, mais l'EditText conserve le focus, si je me souviens bien.

9voto

MahmutKarali Points 57
<LinearLayout 
    android:focusable="true"
    android:focusableInTouchMode="true" 
    android:layout_width="0px"
    android:layout_height="0px" />

 <EditText android:text="" 
    android:id="@+id/EditText01"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:hint="@string/hint">
 </EditText>

Aucun autre codage n'est nécessaire, c'est une solution simple et claire.

2voto

Azad Qaderzadeh Points 66

Essayez ce code dans LinearLayout

 <LinearLayout
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <EditText

            android:hint="Search..."
            android:drawableRight="@drawable/ic_search"
            android:id="@+id/search_tab_hotbird_F"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyHotbird_F"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="4dp">

        </android.support.v7.widget.RecyclerView>

    </LinearLayout>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X