水平滚动视图意外工作

时间:2016-02-21 06:14:39

标签: java android horizontalscrollview

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

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显示问题:
http://i.stack.imgur.com/gukRy.gif

请帮助!

1 个答案:

答案 0 :(得分:2)

尝试

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

在onCreate中只调用一次findViewById