Android - onFocusChange не работает с первого раза - PullRequest
2 голосов
/ 05 февраля 2020

Когда я касаюсь EditText, я хочу, чтобы мои scrollView прокручивали несколько пикселей. Проблема в том, что он работает только тогда, когда я касаюсь соответствующего EditText во второй раз и если фокус был на другом editText. Вот код:

KOTLIN:

usernameLogin.setOnFocusChangeListener(object: View.OnFocusChangeListener {
     override fun onFocusChange(view:View, hasFocus:Boolean) {
          if (hasFocus){
             scroll_login.scrollTo(0, 240);
          }else{
             Toast.makeText(getApplicationContext(), "Lost the focus", Toast.LENGTH_LONG).show()
         }
     }
 })

XML

<ScrollView
    android:id="@+id/scroll_login"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

 ...


 <com.google.android.material.textfield.TextInputLayout
                android:id="@+id/text_input_usernameLogin"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <EditText
                    android:id="@+id/usernameLogin"
                    android:layout_width="match_parent"
                    android:layout_height="48dp"
                    android:hint="E-mail"
                    android:inputType="textEmailAddress" />

 </com.google.android.material.textfield.TextInputLayout>

 <com.google.android.material.textfield.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:passwordToggleEnabled="true">

                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="48dp"
                    android:hint="Password"
                    android:inputType="textPassword"/>

 </com.google.android.material.textfield.TextInputLayout>

 </ScrollView>

1 Ответ

1 голос
/ 05 февраля 2020

Убедитесь, что ваш EditText не сфокусирован по умолчанию (например, когда вы переключаетесь на этот фрагмент / действие). Чтобы предотвратить это, попробуйте clearFocus () с указанным c EditText или requestFocus () на что-то другое

РЕДАКТИРОВАТЬ: Я недавно наткнулся на похожий пост здесь, надеюсь, это поможет. ссылка

...