2012-05-08 4 views
0

私はスクロールビュー内のテキストビューを使用して実行可能なタイプライターエフェクトを作成しています。AndroidのScrollViewでTextView.postDelayedを使用したタイプライター効果

これは私が唯一のブラックボックスなしのテキストを取得しています...私が何をしたか

final ScrollView sv = new ScrollView(this); 
    sv.setLayoutParams(new LinearLayout.LayoutParams((int)display.getWidth()/2, (int)((display.getHeight()/4))*3)); 
    sv.setPadding(0, px2DP(10), px2DP(10), px2DP(10)); 

    final CharSequence text = getResources().getText(R.string.longstring); 

    final TextView content = new TextView(this); 
    content.setBackgroundColor(getResources().getColor(R.color.Black)); 
    content.setTextColor(getResources().getColor(R.color.White)); 
    content.setTextSize(TypedValue.COMPLEX_UNIT_SP,20); 
    content.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)); 

    sv.addView(content); 

    content.postDelayed(new Runnable(){ 
     @Override 
     public void run() { 
      content.append(text.subSequence(0, index++)); 
      sv.fullScroll(View.FOCUS_DOWN);  
     } 

    },70); 

です。

私は間違っていますか?助けてください。

PS。私はすでに解決策を見つけました!

+0

メインビューにScrollViewを追加しますか?また、Runnableで 'sv.invalidate()'を実行するとどうなりますか? – Jonas

+0

ええ、すべてが正しく設定されているかどうかをテストします。単純なケースが正しく表示されるように、 'content.postDelayed(...);': 'content.setText(" Testing ")の前に追加してみてください。 – kabuko

+0

また、postDelayedはRunnableを1回だけ実行することに注意してください。 http://developer.android.com/reference/android/view/View.html#postDelayed(java.lang.Runnable,+long) – Jonas

答えて

0

解決策が見つかりました。私は間違ったハンドラ実行可能な概念を使用しています。 Jonasが指摘したことに基づいて、Runnableは一度だけ実行されます。したがって、ループが必要です。

としては、このリンクを示唆した: How to run a Runnable thread in Android?

答えは再帰のようなものです。

とにかくおかげで! Androidはとてもクールです。

関連する問題