2016-11-13 3 views
0

は、私はちょうどこのようなアンドロイドのTextViewにテキストを設定し、簡単なアンドロイドのコードを書いた:のTextViewのsetText時間

String all = ""; 
String sample = "a sample text..."; 

long start = SystemClock.currentThreadTimeMillis(); 
for(int i=0; i<20; i++) { 
    all += sample; 
    txtContent.setText(all); 
} 
long end = SystemClock.currentThreadTimeMillis(); 

Log.d("set text time", "time: " + (end - start)); 

txtContentは簡単なのLinearLayout

の内側にある私のレイアウト上のTextViewである私はこれを実行します2つの状況でコード:

txtContent layout_width = "wrap_content"

及びlayout_width = "match_parent"(またはconstの値)

驚いたことに、layout_width = "wrap_content"を設定すると、ループの完了には、layout_width = "match_parent"または任意のconst値よりもはるかに短い時間がかかります。

なぜこのようなことが起こるのか誰かが助けてくれますか?

答えて

0

のLinearLayout親を使用し、そのような内部textviewsを中心なければならないのLinearLayoutに

親のLinearLayoutをあなたのTextViewを入れ、

<LinearLayout 
     android:layout_width="match_parent" 
     android:gravity="center" 
     android:id="@+id/linearLayout"> 
+0

ありがとう。それは私の答えではありません。テキストをテキストに設定するために行った測定システムを説明できるかどうかを知りたい場合 – Hojjat

+0

私はそれを理解できませんが毎秒textviewを更新しますか? –

+0

はい、私はepubリーダーのようなものを書いています。毎回1つのパラグラフを読みました。テキストビューに収まるだけの十分なテキストを読んでください。だから私は1つのパラグラフを読んでテキストビューにして、それがいっぱいであるかどうかをチェックしなければなりません。テキストを効率的にテキストビューに設定することは重要です。 – Hojjat

0

..だからあなたはそのような何かを行う必要があり、

int lastSeconds = 0; 
Handler handler = new Handler(); 
        handler.postDelayed(new Runnable() { 
         @Override 
         public void run() { 
          lastSeconds+=1; 
          textView.setText(lastSeconds) 
         } 
        }, 1000); 

または

textView.post(Runnable...) 

また、あなたが "分:秒" にする必要があります...私はあなたの質問を理解している場合、文字列の書式などが..

別の方法がある

、あなたはクロノメーター

を使用することができます

関連する問題