2016-01-20 9 views
5

Ho due elementi TextInputLayout affiancati: nome e cognome. Sotto di loro ho un altro elemento a tutta larghezza TextInputLayout: email.TextInputLayout EditText nextFocusRight non funziona come dovrebbe

Sto cercando di sovrascrivere il pulsante accanto sulla tastiera in modo che quando si fa clic Avanti all'interno dell'ingresso cognome, si dovrebbe andare a cognome di ingresso e da lì a e-mail, ecc

Ora il problema è che quando premo il tasto Next sulla tastiera, non si passa al campo lastname, ma si passa alla posta elettronica sotto di esso.

Questo fa parte del mio file xml dove avere questi tre ingressi:

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

Ho anche provato mira il TextInputLayout invece di EditText ma non ha alcun effetto.

La messa a fuoco successiva è possibile anche con TextInputLayout o è un bug o sto facendo qualcosa di molto sbagliato?

+0

Se la risposta di @Yen Pei Tay non risolvere il problema, prova a seguire. http://stackoverflow.com/a/41489258/1015678 –

risposta

6

Cambia per questo -> Android: nextFocusDown = "@ + id/register_input_lastname"

+0

Haha, funziona davvero. Sto indovinando la causa di questo è che l'attenzione si sposta naturalmente verso il basso e tecnicamente l'input del cognome è sotto il nome. Ma non capisco perché c'è nextFocusRight ecc? Quelli lavorano solo sugli ingressi regolari di EditText? –

+0

Nessuna idea, ma vale la pena provare. –

+0

Non stavo mettendo il simbolo più che lo ha causato di non trovare l'id. aggiungere il plus è una buona idea, grazie. – j2emanue

3

La risposta di cui sopra è corretta, ma ho solo bisogno di aggiungere qualcosa quando provo non ho ricevuto l'attenzione alla prossima linea in modo aggiungo un altro attributo oltre alla risposta di cui sopra

Android: "digitare il vostro input qui" InputType =

dopo aver messo questo ho ottenuto la mia modifica attenzione il testo a quello successivo

esempio

android: InputType = "testo" // impostare qualsiasi tipo di ingresso secondo il vostro requisito

android: nextFocusDown = "@ + id/next_id"

Esempio completo di un EditText

<android.support.design.widget.TextInputLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout" 
      android:textColorHint="@color/hint"> 

      <EditText          
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:maxLines="1" 
       android:id="@id/first_name_edt" 
       android:nextFocusDown="@+id/last_name_edt" 
       android:imeOptions="actionNext" 
       android:inputType="text" 
       android:hint="@string/str_first_name" /> 
     </android.support.design.widget.TextInputLayout> 

Spero che questo vi aiuterà altri :)

1

Ho usato questo codice qui sotto sta funzionando come una magia :)

In realtà il trucco è

android: imeOptions = "actionNext"

android: nextFocusDown = "@ + id/tilAddress"

Android: InputType = "text"

<android.support.design.widget.TextInputLayout 
     android:id="@+id/tilSchoolName" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="@dimen/margin_small"> 

     <EditText 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:textSize="@dimen/text_size_small" 
      android:textColor="@color/colorTxt" 
      android:maxLines="1" 
      android:imeOptions="actionNext" 
      android:nextFocusDown="@+id/tilAddress" 
      android:inputType="text" 
      android:hint="School Name" /> 
    </android.support.design.widget.TextInputLayout> 

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

     <EditText 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:textSize="@dimen/text_size_small" 
      android:textColor="@color/colorTxt" 
      android:maxLines="1" 
      android:hint="Address" /> 
    </android.support.design.widget.TextInputLayout> 
Problemi correlati