水平滚动视图意外工作
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
。
我正在尝试创建一个计算器。我在最新的 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
。