在Android ScrollView类中使用smoothScrollBy方法

在Android ScrollView类中使用smoothScrollBy方法,android,scrollview,Android,Scrollview,我有一个带有ScrollView的Android程序,当我在电脑上的模拟器上调用scrollBy方法时,它会正确地自动滚动,但在Android手机上不会 代码如下: public class RecordGameActivity3 extends Activity { ScrollView myView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceSta

我有一个带有ScrollView的Android程序,当我在电脑上的模拟器上调用scrollBy方法时,它会正确地自动滚动,但在Android手机上不会

代码如下:

public class RecordGameActivity3 extends Activity {
ScrollView myView;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.recordgame3);
    myView = (ScrollView)findViewById(R.id.scrollView1);

}

public void addPlayer(View v)
{
    //Removed non-related code

    myView.smoothScrollBy(0, 50);
}
}
另外,常规的scrollBy方法不起作用,或者scrollTo方法不起作用(尽管我可能没有正确地使用它,因为它在计算机上也不起作用)。有人知道什么地方出了问题吗

编辑:

Darrell的回答告诉我,我的问题是,我在一个函数中调用smoothScrollBy方法,在这个函数中,我对布局进行了更改,使滚动区域足够大,可以滚动。显然,当我在函数中调用它时,这些更改并没有实际应用,因此无法滚动

因此,我使用他的建议将代码更改为:

public class RecordGameActivity3 extends Activity {
ScrollView myView;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recordgame3);
myView = (ScrollView)findViewById(R.id.scrollView1);

// New code that listens for a change in the scrollView and then calls the scrollBy method.
ViewTreeObserver vto = myView.getViewTreeObserver();
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    public void onGlobalLayout() {
        myView.smoothScrollBy(0, 100);
    }});

}

public void addPlayer(View v)
{
    //Code that is called on an onClick listener that adds things to the ScrollView making it scrollable.
}
}

是否从onCreate方法调用smoothScrollBy?尝试等待视图设置完成后,例如从onResume。(如果必须从onCreate开始执行此操作,您可以向OnGlobalYoutListener注册视图的ViewTreeObserver,然后从那里执行滚动。)

在我的情况下,当在确切的ScrollView中触发MotionEvent.ACTION\u UP事件时,我需要滚动ScrollView,scrollTo()起作用,但smoothScrollTo()不起作用。多亏了你们,我现在明白了,使用处理程序平滑滚动视图一段时间后就可以了。

好的-我不是通过onCreate方法来实现的,而是通过一种方法来实现的,我只是添加了一些组件,使其能够滚动。我如何使用ViewTreeObserver?没关系,我知道怎么用了。非常感谢你的帮助。