2012-03-17 11 views
5

私は自分のコンピュータ上のエミュレータでscrollByメソッドを呼び出すと、自動的にスクロールするScrollViewを持つAndroidプログラムを持っていますが、Android携帯では実行しません。ここでAndroid ScrollViewクラスの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); 

} 

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

    myView.smoothScrollBy(0, 50); 
} 
} 

また、定期的なscrollByメソッドが動作しないか、scrollTo方法(つまり、いずれかのコンピュータ上では動作しませんので、私は正しくそれを使用していないかもしれないが)。誰が何が間違っているかもしれないという考えを持っていますか?

EDIT:

ダレルの答えとして私の問題は、私は私がすることができるように十分な大きスクロール領域になるだろうなレイアウトに変更を作っていた機能の中から、私の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. 
} 
} 

答えて

8

あなたがのonCreateメソッドからsmoothScrollByを呼び出していますか?ビューが設定された後、たとえばonResumeから待機するようにしてください。 (あなたがonCreateからそれを行う必要がある場合は、OnGlobalLayoutListenerでビューのViewTreeObserverを登録し、そこからスクロールすることができます)。

+0

OK - 私はonCreateメソッドからやっていませんが、私はそれをスクロールできるコンポーネントを追加するだけの方法でそれをやっています。 ViewTreeObserverはどのように使用できますか? –

+0

心配しないでください - 私はどのように考え出しましたか?ご助力ありがとうございます。 –

2

私の場合は、MotionEvent.ACTION_UPイベントがあるときにScrollViewをスクロールする必要があります正確なScrollViewでトリガされたscrollTo()は動作しますが、smoothScrollTo()は動作しません。皆さんのおかげで、私は今すぐそれを理解しました。しばらくするとsmoothをスクロールするハンドラを使用します。

関連する問題