Я пытаюсь создать калькулятор. Я работаю в последней Android-студии. Как и в калькуляторах, все новые токи (числа, операторы) должны быть показаны справа, и если поле больше, чем на дисплее, оно должно прокручиваться до последнего токена. Я уже просматривал и нашел способ сделать то же самое.
Код то же:Горизонтальная прокрутка Просмотр неожиданно
private void scrollRight() {
horizontalScrollView = (HorizontalScrollView) findViewById(R.id.horizontalScrollView);
ViewTreeObserver viewTreeObserver = horizontalScrollView.getViewTreeObserver();
viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
horizontalScrollView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
horizontalScrollView.scrollTo(entry.getWidth(), 0);
}
});
}
scrollRight
вызывается событие OnClick, который проверяет, если маркер будет введен, и называет это.
Все работает отлично, то есть на каждом новом токене прокрутка полосы прокрутки до конца. Но если я попытаюсь прокрутить до начала вручную, это больше не работает. После этого каждый раз, когда нажимается новый токен, полоса прокрутки сначала перемещается в конец, а затем обратно в начало.
Единственный возможный вариант - перезапустить программу. Я попробовал отладку функции OnGlobalLayout
, но отладчик теряет все кадры, выходя из функции, поэтому трудно понять, что именно делает полосу прокрутки в начале.
Пожалуйста, помогите!
Это выглядит лучше, чем метод ViewTreeObserver, и я собираюсь реализовать это. Теперь для каждого токена полоса прокрутки перемещается слева направо и для следующего токена, она перемещается справа налево. Снова это инициируется только при попытке прокрутки вручную. Кроме того, я использовал 'findViewById' только один раз в 'onCreate'. Это было задним числом с моей стороны! –
попробуйте обновленный ответ, пожалуйста) –
Да! Метод fullscroll работает. Не знаю, почему метод scrollTo не работает. Во всяком случае, спасибо за быстрый ответ. –