Android: ScrollView заставляет снизу - PullRequest
162 голосов
/ 20 июня 2010

Я бы хотел, чтобы ScrollView запускался полностью внизу.Любые методы?

Ответы [ 13 ]

1 голос
/ 21 июня 2016

Не совсем ответ на вопрос, но мне нужно было прокрутить вниз, как только EditText получил фокус.Однако принятый ответ заставил бы ET также сразу потерять фокус (к ScrollView, который я предполагаю).

Мой обходной путь был следующий:

emailEt.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if(hasFocus){
            Toast.makeText(getActivity(), "got the focus", Toast.LENGTH_LONG).show();
            scrollView.postDelayed(new Runnable() {
                @Override
                public void run() {
                    scrollView.fullScroll(ScrollView.FOCUS_DOWN);
                }
            }, 200);
        }else {
            Toast.makeText(getActivity(), "lost the focus", Toast.LENGTH_LONG).show();
        }
    }
});
0 голосов
/ 27 февраля 2019

В этих случаях использовалось только scroll.scrollTo (0, sc.getBottom ()) не работает, используйте его, используя scroll.post

Пример:

scroll.post(new Runnable() {
  @Override
  public void run() {
  scroll.fullScroll(View.FOCUS_DOWN);
  } 
});
0 голосов
/ 09 апреля 2018

Использование другого замечательного способа сделать это с сопрограммами Kotlin.Преимущество использования сопрограммы по сравнению с обработчиком с работоспособным (post / postDelayed) состоит в том, что он не запускает дорогой поток для выполнения отложенного действия.

launch(UI){
    delay(300)
    scrollView.fullScroll(View.FOCUS_DOWN)
}

Важно указать сопрограммуHandlerContext как пользовательский интерфейс, иначе отложенное действие не может быть вызвано из потока пользовательского интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...