水平滚动视图意外工作

Horizontal Scroll View working unexpectedly

我正在尝试创建一个计算器。我在最新的 Android Studio 工作。就像在计算器中一样,所有新标记(数字、运算符)都应显示在右侧,如果字段大于显示,则应滚动到最新标记。我已经浏览并找到了一种方法来做同样的事情。
相同的代码是:

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 函数,但调试器在退出该函数时丢失了所有帧,因此很难知道究竟是什么使滚动条回到开头。

GIF 显示问题:

请帮忙!

尝试

horizontalScrollView.post(new Runnable() {
            @Override
            public void run() {
                horizontalScrollView.fullScroll(View.FOCUS_RIGHT);
            }
        });

并且在 onCreate 中仅调用一次 findViewById