webentwicklung-frage-antwort-db.com.de

Wechseln Sie zu einem anderen EditText, wenn Sie unter Android auf Soft-Tastatur Weiter klicken

Wenn ich auf 'Weiter' klicke, muss der Fokus auf dem User EditText auf das Passwort verschoben werden. Dann muss es sich von Password aus nach rechts bewegen und so weiter. Kannst du mir helfen, wie ich das programmiere?

enter image description here

<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>
176
androidBoomer

Fokusbehandlung

Die Fokusbewegung basiert auf einem Algorithmus, der den nächstgelegenen Nachbarn in einer bestimmten Richtung findet. In seltenen Fällen stimmt der Standardalgorithmus möglicherweise nicht mit dem beabsichtigten Verhalten des Entwicklers überein. 

Ändern Sie das Standardverhalten der Richtungsnavigation mithilfe der folgenden XML-Attribute:

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

Neben der Richtungsnavigation können Sie auch die Tabulatornavigation verwenden. Dafür müssen Sie verwenden

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

Um eine bestimmte Ansicht zu erhalten, rufen Sie auf 

view.requestFocus()

Zum Abhören bestimmter wechselnder Fokusereignisse verwenden Sie einen View.OnFocusChangeListener


Tastaturtaste

Sie können Android:imeOptions verwenden, um diese zusätzliche Taste auf Ihrer Tastatur zu bedienen.

Zusätzliche Funktionen, die Sie in einem mit einem Editor verknüpften IME aktivieren können um die Integration in Ihre Anwendung zu verbessern. Die Konstanten hier entsprechen den durch imeOptions definierten. 

Die Konstanten von imeOptions enthalten eine Vielzahl von Aktionen und Flags. Die obigen Werte finden Sie unter dem Link oben. 

Wertbeispiel

ActionNext

die Aktionstaste führt eine "nächste" Operation aus, die den Benutzer zur .__ führt. nächstes Feld, das Text akzeptiert.

ActionDone :

die Aktionstaste führt eine "Fertig" -Operation aus, was bedeutet, dass nichts mehr eingegeben werden muss und der IME geschlossen wird.

Codebeispiel:

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

Wenn Sie sich an Ereignissen von Ereignissen anhören möchten, verwenden Sie einen 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;
    }
});

405
Tobrun
Android:inputType="text"

sollte den gleichen Effekt bringen. Nach dem nächsten Hiting wird der Fokus auf das nächste Element gesetzt.

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

verwenden Sie diese Option in Zusatz wenn Sie nicht möchten, dass die nächste Ansicht den Fokus erhält 

58
Matthias H

füge deinen editText hinzu

Android:imeOptions="actionNext"
Android:singleLine="true"

Eigenschaft zur Aktivität im Manifest hinzufügen

    Android:windowSoftInputMode="adjustResize|stateHidden"

in der Layout-Datei ScrollView als Root- oder Parent-Layout gesetzt alle ui

<?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>

Wenn Sie nicht jedes Mal etwas hinzufügen möchten, erstellen Sie den Stil: Fügen Sie den Stil in values ​​/ style.xml hinzu

standardstil:

<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>
22

Verwenden Sie die folgende Zeile

Android:nextFocusDown="@+id/parentedit"

parentedit ist die ID der nächsten fokussierten EditText.

Die obige Zeile benötigt auch die folgende Zeile.

Android:inputType="text"

oder

Android:inputType="number"

Danke für den Vorschlag an @Alexei Khlebnikov.

14
Spring Breaker
Android:inputType="textNoSuggestions"
Android:imeOptions="actionNext"
Android:singleLine="true"
Android:nextFocusForward="@+id/.."

Zusätzliches Feld hinzufügen 

Android: inputType = "textNoSuggestions"

in meinem Fall gearbeitet

8
<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" />

Diese drei Linien wirken magisch

            Android:maxLines="1"
            Android:imeOptions="actionNext"
            Android:singleLine="true"
6
Hitesh Kushwah

Beachten Sie in Ihrem onEditorAction-Handler, dass Sie einen Boolean-Wert zurückgeben müssen, der angibt, ob Sie die Aktion behandeln (true) oder ob Sie eine bestimmte Logik angewendet haben und das normale Verhalten (false) verwenden möchten, wie im folgenden Beispiel gezeigt:

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

Ich fand das, als ich nach der Ausführung meiner Logik wahr zurückkehrte, da sich der Fokus nicht bewegte.

6
user3701500

verwenden Sie einfach den folgenden Code, der gut funktioniert, und verwenden Sie inputType für jeden Text und die nächste Schaltfläche wird auf der Tastatur angezeigt.

Android:inputType="text" or Android:inputType="number" etc
2
pawan kumar

Wenn Sie eine mehrzeilige EditText mit imeOptions verwenden möchten, versuchen Sie Folgendes: 

Android:inputType="textImeMultiLine"
1
Chris

In einigen Fällen müssen Sie den Fokus manuell zum nächsten Feld verschieben:

focusSearch(FOCUS_DOWN).requestFocus();

Dies kann beispielsweise erforderlich sein, wenn Sie über ein Textfeld verfügen, das beim Klicken eine Datumsauswahl öffnet, und Sie möchten, dass der Fokus automatisch zum nächsten Eingabefeld wechselt, sobald der Benutzer ein Datum ausgewählt hat und die Auswahl schließt. Es gibt keine Möglichkeit, dies in XML zu behandeln, es muss programmgesteuert erfolgen.

1
flawyte
<?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

Fügen Sie inputType zu edittext hinzu und bei Eingabe geht es zum nächsten edittext 

Android:inputType="text"
Android:inputType="textEmailAddress"
Android:inputType="textPassword" 

und viele mehr.

inputType = textMultiLine wechselt bei der Eingabe nicht zum nächsten Edittext

1
Sharmad Desai

Einfacher Weg, wenn Sie nur wenige Felder nacheinander haben:

Müssen einstellen

Android:maxLines="1"

Android:imeOptions="actionNext"

Android:inputType=""<- Legen Sie die Art des Texts fest. Andernfalls wird er mehrzeilig und verhindert, dass der nächste Text angezeigt wird

Beispiel:

<EditText Android:layout_width="match_parent"
              Android:layout_height="wrap_content"
              Android:textSize="@dimen/text_large"
              Android:maxLines="1"
              Android:inputType="textEmailAddress"
              Android:imeOptions="actionNext"
              Android:layout_marginLeft="@dimen/element_margin_large"
              Android:layout_marginRight="@dimen/element_margin_large"
              Android:layout_marginTop="0dp"/>
0
PsyhoLord
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
Kishore Reddy