Если вы хотите просто прокрутить до конца, вы можете просто использовать fullScroll (ScrollView.FOCUS_DOWN).Если вам нужно особенно числовое значение, основанное на высоте представления прокрутки, вам придется создать подкласс своего представления прокрутки и переопределить onSizeChanged, что даст вам фактическую числовую высоту.Имейте в виду, что onSizeChanged будет вызываться только после onResume и не обязательно вызываться каждый раз, когда возобновляется ваша деятельность.
Часть причины, по которой вы иногда прокручиваете до конца, а иногда нет, возможно, из-засостояние гонки.Иногда ваша прокрутка происходит до того, как произошли другие важные вещи (например, заполнение представления), поэтому она, похоже, ничего не делает.
Попробуйте отправить ваши вызовы обработчику представления прокрутки:
yourScrollView.post(new Runnable(){
@Override
public void run(){
yourScrollView.fullScroll(ScrollView.FOCUS_DOWN);
}
};
Иногда может помочь даже добавление небольшой задержки:
yourScrollView.postDelayed(new Runnable(){
@Override
public void run(){
yourScrollView.fullScroll(ScrollView.FOCUS_DOWN);
}
}, 200);