Déplacer vers un autre EditText lorsque vous cliquez sur le clavier logiciel suivant sur Android

Lorsque j'appuie sur le 'suivant', le focus sur L'utilisateur EditText doit être déplacé vers le mot de passe. Ensuite, à partir du mot de passe, il doit se déplacer vers la droite et ainsi de suite. Pouvez-vous m'aider sur la façon de coder?

entrez la description de l'image ici

<LinearLayout
    android:id="@+id/LinearLayout01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="User Name*" />

    <EditText
        android:id="@+id/txt_User"
        android:layout_width="290dp"
        android:layout_height="33dp"
        android:singleLine="true" />

</LinearLayout>


<LinearLayout
    android:id="@+id/LinearLayout02"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Password*" />

    <EditText
        android:id="@+id/txt_Password"
        android:layout_width="290dp"
        android:layout_height="33dp"
        android:singleLine="true"
        android:password="true" />

    <TextView
        android:id="@+id/confirm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Password*" />

    <EditText
        android:id="@+id/txt_Confirm"
        android:layout_width="290dp"
        android:layout_height="33dp"
        android:singleLine="true"
        android:password="true" />

</LinearLayout>
162
demandé sur androidBoomer 2013-08-01 13:08:41

13 réponses

Gestion De La Mise Au Point

Le mouvement de mise au point est basé sur un algorithme qui trouve le plus proche voisin dans une direction donnée. Dans de rares cas, l'algorithme par défaut peut ne pas correspondre au comportement prévu du développeur.

Modifier le comportement par défaut de la navigation directionnelle en utilisant les attributs XML suivants:

android:nextFocusDown="@+id/.."  
android:nextFocusLeft="@+id/.."    
android:nextFocusRight="@+id/.."    
android:nextFocusUp="@+id/.."  

Outre la navigation directionnelle, vous pouvez utiliser la navigation par onglets. Pour cela, vous devez utiliser

android:nextFocusForward="@+id/.."

Pour obtenir une vue particulière pour prendre le focus, appelez

view.requestFocus()

Pour écouter certains changement d'orientation des événements de l'utilisation d'un View.OnFocusChangeListener


Bouton du clavier

Vous pouvez utiliser android:imeOptions pour la manutention supplémentaire sur votre clavier.

Fonctionnalités supplémentaires que vous pouvez activer dans un IME associé à un éditeur pour améliorer l'intégration avec votre application. Les constantes ici correspond à ceux définis par imeOptions.

Les constantes d'imeOptions comprennent une variété de actions et drapeaux, voir le lien ci-dessus pour leurs valeurs.

Exemple de Valeur

ActionNext :

La touche action effectue une opération "next", amenant l'utilisateur vers le champ suivant qui acceptera le texte.

ActionDone :

La clé d'action effectue une opération" done", ce qui signifie généralement qu'il n'y a plus rien à saisir et que L'IME sera fermé.

Code exemple:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="32dp"
        android:layout_marginTop="16dp"
        android:imeOptions="actionNext"
        android:maxLines="1"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/editText1"
        android:layout_below="@+id/editText1"
        android:layout_marginTop="24dp"
        android:imeOptions="actionDone"
        android:maxLines="1"
        android:ems="10" />

</RelativeLayout>

Si vous voulez écouter les événements imeoptions, utilisez un TextView.OnEditorActionListener.

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_SEARCH) {
            performSearch();
            return true;
        }
        return false;
    }
});

374
répondu Tobrun 2017-01-27 21:27:30
android:inputType="text"

Devrait apporter le même effet. Après hiting à côté d'apporter la mise au point à l'élément suivant.

android:nextFocusDown="@+id/.."

Utilisez ceci dans addition Si vous ne voulez pas que la vue suivante obtienne le focus

53
répondu Matthias H 2013-08-01 10:24:41

Ajouter votre editText

android:imeOptions="actionNext"
android:singleLine="true"

Ajouter la propriété à l'activité dans le manifeste

    android:windowSoftInputMode="adjustResize|stateHidden"

Dans le fichier de mise en page ScrollView définir en tant que mise en page racine ou parent toute l'interface utilisateur

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.ukuya.marketplace.activity.SignInActivity">

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

       <!--your items-->

    </ScrollView>

</LinearLayout>

Si vous ne voulez pas chaque fois qu'il ajoute, créer du style: ajouter du style dans les valeurs / style.xml

Par défaut / style:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="editTextStyle">@style/AppTheme.CustomEditText</item>
    </style>

<style name="AppTheme.CustomEditText"     parent="android:style/Widget.EditText">
        //...
        <item name="android:imeOptions">actionNext</item>
        <item name="android:singleLine">true</item>
    </style>
18
répondu Abror Esonaliyev 2016-12-11 17:59:17

Utilisez la ligne suivante

android:nextFocusDown="@+id/parentedit"

parentedit est L'ID du prochain EditText à focaliser.

La ligne ci-dessus aura également besoin de la ligne suivante.

android:inputType="text"

Ou

android:inputType="number"

Merci pour la suggestion @Alexei Khlebnikov.

14
répondu Spring Breaker 2018-02-17 09:21:48
android:inputType="textNoSuggestions"
android:imeOptions="actionNext"
android:singleLine="true"
android:nextFocusForward="@+id/.."

Ajout d'un champ supplémentaire

Android: inputType= "textNoSuggestions"

Travaillé dans mon cas!

7
répondu Tripathee Gaurav 2017-02-21 06:43:49

Dans votre gestionnaire onEditorAction, gardez à l'esprit que vous devez renvoyer un booléen qui indique si vous gérez l'action (true) ou si vous avez appliqué une logique et que vous voulez le comportement normal (false), comme dans l'exemple suivant:

EditText te = ...
te.setOnEditorActionListener(new OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event){
        if (actionId == EditorInfo.IME_ACTION_NEXT) {
            // Some logic here.
            return true; // Focus will do whatever you put in the logic.
        }
        return false;  // Focus will change according to the actionId
    }
});

J'ai trouvé cela quand je suis revenu vrai après avoir effectué ma logique puisque le focus ne bougeait pas.

5
répondu user3701500 2016-01-30 16:17:22
<AutoCompleteTextView
                android:id="@+id/email"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:drawableLeft="@drawable/user"
                android:hint="@string/username"
                android:inputType="text"
                android:maxLines="1"
                android:imeOptions="actionNext"
                android:singleLine="true" />

Ces trois lignes font la magie

            android:maxLines="1"
            android:imeOptions="actionNext"
            android:singleLine="true"
4
répondu Hitesh Kushwah 2018-05-21 05:05:56

Il suffit d'utiliser le code suivant, il fonctionnera bien et utiliser inputType pour chaque edittext et le bouton Suivant apparaîtra dans le clavier.

android:inputType="text" or android:inputType="number" etc
2
répondu pawan kumar 2017-11-08 17:41:22
<?xml version="1.0" encoding="utf-8"?>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ScrollView01"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:scrollbars="vertical" >

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="666dp"
android:background="#1500FFe5"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<TextView
    android:id="@+id/TextView02"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/editGrWt"
    android:layout_marginTop="14dp"
    android:layout_toLeftOf="@+id/textView3"
    android:ems="6"
    android:text="    Diamond :"
    android:textColor="@color/background_material_dark"
    android:textSize="15sp" />
  <EditText
    android:id="@+id/editDWt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/TextView02"
    android:layout_alignLeft="@+id/editGrWt"
    android:background="@color/bright_foreground_inverse_material_light"
    android:ems="4"
    android:hint="Weight"
    android:inputType="numberDecimal"
    android:nextFocusLeft="@+id/editDRate"
    android:selectAllOnFocus="true"
    android:imeOptions="actionNext"

    />
 <requestFocus />


<TextView
    android:id="@+id/TextView03"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/TextView02"
    android:layout_below="@+id/TextView02"
    android:layout_marginTop="14dp"
    android:ems="6"
    android:text="    Diamond :"
    android:textColor="@color/background_material_dark"
    android:textSize="15sp" />

<EditText
    android:id="@+id/editDWt1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/TextView03"
    android:layout_alignBottom="@+id/TextView03"
    android:layout_alignLeft="@+id/editDWt"
    android:background="@color/bright_foreground_inverse_material_light"
    android:ems="4"
    android:hint="Weight"
    android:inputType="numberDecimal"
    android:text="0"
    android:selectAllOnFocus="true"
    android:imeOptions="actionNext"/>
 <requestFocus />

<TextView
    android:id="@+id/TextView04"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/editDWt1"
    android:layout_marginTop="14dp"
    android:layout_toLeftOf="@+id/textView3"
    android:ems="6"
    android:text="         Stone :"
    android:textColor="@color/background_material_dark"
    android:textSize="15sp" />

<EditText
    android:id="@+id/editStWt1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/TextView04"
    android:layout_alignBottom="@+id/TextView04"
    android:layout_alignLeft="@+id/editDWt1"
    android:background="@color/bright_foreground_inverse_material_light"
    android:ems="4"
    android:hint="Weight"
    android:inputType="numberDecimal"
    android:nextFocusForward="@+id/editStRate1"
    android:imeOptions="actionNext" />
 <requestFocus />
  <TextView
     android:id="@+id/TextView05"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignLeft="@+id/TextView04"
     android:layout_below="@+id/editStRate1"
     android:layout_marginTop="14dp"
     android:ems="6"
     android:text="         Stone :"
     android:textColor="@color/background_material_dark"
     android:textSize="15sp" />


</RelativeLayout>

</ScrollView>
1
répondu Nilkanth vithani 2015-05-25 15:14:01

Si vous souhaitez utiliser un multi - EditText avec imeOptions, essayez:

android:inputType="textImeMultiLine"
1
répondu Chris 2017-09-27 20:38:42
Inside Edittext just arrange like this


<EditText
    android:id="@+id/editStWt1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:imeOptions="actionNext" //now its going to rightside/next field automatically
    ..........
    .......

</EditText>
0
répondu Kishore Reddy 2018-01-05 09:33:51

Ajouter inputType à edittext et en entrée, il ira le prochain edittext

android:inputType="text"
android:inputType="textEmailAddress"
android:inputType="textPassword" 

Et beaucoup plus.

InputType = textMultiLine ne passe pas au prochain edittext en entrée

0
répondu Sharmad Desai 2018-05-15 18:57:29

Dans certains cas, vous devrez peut-être déplacer manuellement le focus sur le champ suivant:

focusSearch(FOCUS_DOWN).requestFocus();

Vous pouvez en avoir besoin si, par exemple, vous disposez d'un champ de texte qui ouvre un sélecteur de date au clic et que vous souhaitez que le focus passe automatiquement au champ de saisie suivant une fois qu'une date est sélectionnée par l'utilisateur et que le sélecteur se ferme. Il n'y a aucun moyen de gérer cela en XML, cela doit être fait par programme.

0
répondu Mickaël A. 2018-09-11 13:53:34