TextInputLayout EditText nextFocusRight not working as should

Karl Viiburg picture Karl Viiburg · Jan 20, 2016 · Viewed 7.8k times · Source

I have two TextInputLayout elements side by side: firstname and lastname. Below them I have another full width TextInputLayout element: email.

I'm trying to overwrite the next button on the keyboard so that when clicking Next inside the firstname input, it should go to lastname input and from there to e-email etc.

Now the issue is that when I press Next on the keyboard it's not going to the lastname field but instead going to e-mail below it.

This is part of my xml file where I have these three inputs:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_gravity="center_horizontal"
    android:baselineAligned="false">

    <android.support.design.widget.TextInputLayout
        android:id="@+id/input_layout_firstname"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1">

        <EditText
            android:id="@+id/register_input_firstname"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/hint_firstname"
            android:inputType="textCapSentences"
            android:nextFocusForward="@+id/register_input_lastname"
            android:nextFocusRight="@+id/register_input_lastname" />

    </android.support.design.widget.TextInputLayout>

    <android.support.design.widget.TextInputLayout
        android:id="@+id/input_layout_lastname"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1">

        <EditText
            android:id="@+id/register_input_lastname"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/hint_lastname"
            android:inputType="textCapSentences"
            android:nextFocusDown="@+id/register_input_email" />

    </android.support.design.widget.TextInputLayout>

</LinearLayout>

<android.support.design.widget.TextInputLayout
    android:id="@+id/input_layout_email"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <EditText
        android:id="@+id/register_input_email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/hint_email"
        android:inputType="textEmailAddress" />

</android.support.design.widget.TextInputLayout>

I also tried targeting the TextInputLayout instead of EditText but it has no effect.

Is the next focus even possible with TextInputLayout's or is it a bug or am I just doing something very wrong?

Answer

Yen Pei Tay picture Yen Pei Tay · Jan 29, 2016

Change to this --> android:nextFocusDown="@+id/register_input_lastname"