【问题标题】:TextView SetText TimeTextView SetText 时间
【发布时间】:2017-03-27 02:29:26
【问题描述】:

我写了一个简单的android代码,只是将文本设置为android textView,如下所示:

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 是我的布局中的一个 TextView,它位于一个简单的 LinearLayout 中

我在两种情况下运行此代码:

txt内容layout_width = "wrap_content"

layout_width = "match_parent"(或任何常量值)

令人惊讶的是,当我设置 layout_width = "wrap_content" 时,完成 for 循环所需的时间比设置 layout_width = "match_parent" 或任何 const 值要少得多。

谁能帮我找出为什么会这样?

【问题讨论】:

    标签: android layout textview


    【解决方案1】:

    使用父线性布局

    并将你的文本视图放在线性布局中

    父线性布局应该像这样居中内部文本视图,

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

    【讨论】:

    • 谢谢;但这不是我的答案。我想知道您是否可以解释将文本设置为 textview 的测量系统
    • 我看不懂,但你想每秒更新一次 textview 吗?
    • 是的,我正在写类似 epub reader 的东西,我每次读一段,我应该读到足够的文本以适合 textview。所以我必须阅读一段并设置为 textview 并检查它是否已满。所以这对于将文本有效地设置为 textview 很重要
    • 你是什么意思“我应该阅读足够的文本以适合 textview”?我们在这里谈论什么样的 FIT??
    【解决方案2】:

    所以..你应该这样做,

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

    或者你可以,

    textView.post(Runnable...)
    

    另外,你应该像字符串格式一样制作“分钟:秒”..

    另一种方法是,您可以使用 Chronometer

    如果我理解你的问题...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多