Как go снизу вверх страницы? - PullRequest
0 голосов
/ 19 июня 2020

Я создаю форму с 15 editText внутри NestedScrollView. Предположим, что второй editText пуст. Итак, после нажатия кнопки Отправить я хочу, чтобы эта страница напрямую перешла на второй editText из кнопки Submit , чтобы отобразить ошибку. Но я не знаю, как go с кнопки Отправить напрямую на второй editText. Вы можете помочь мне ? Спасибо.

Ответы [ 2 ]

1 голос
/ 19 июня 2020

Для этого вы можете использовать scrollTo() или smoothScrollTo(), как указано здесь

  1. Чтобы упростить задачу, создайте функцию, как показано ниже:

    //Used to smooth scroll the scrollbar to focused view.
    //@param view : parameter view is any view you want to scroll to
    //view.bottom indicates that you want to scroll to the bottom of the view, 
    //you can change it to view.top
    private fun smoothScrollToThis(view: View) {
        scrollView.post { scrollView.smoothScrollTo(0, view.bottom) }
        /* view.post{} here is a runnable function and uses a separate thread to perform
       the operation so the UI doesn't freeze.*/
    }
    

    Это приведет к прокрутке ScrollBar к просмотру. Разница между scrollTo и smoothScrollTo заключается в том, что scrollTo прокручивает мгновенно, пропуская промежуточную часть, а smoothScrollTo работает как фактическая прокрутка пользователем, показывая все виджеты между ними во время прокрутки. Для длинного макета ScrollView вы должны предпочесть scrollTo, поскольку это быстро.

  2. Теперь вызовите функцию из любого места как:

    smoothScrollToThis(yourEditText) //You can pass any view
    
0 голосов
/ 19 июня 2020

Обычно я использую простой подход:

submitBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // sets focus on the editText such that the ScrollView automatically scrolls to the EditText
                editText.requestFocus();        
                // displays the error message on the EditText
                editText.setError("error message" ); 
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...