首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每秒更新一次TextView

每秒更新一次TextView
EN

Stack Overflow用户
提问于 2013-02-11 23:00:46
回答 11查看 110.4K关注 0票数 51

我环顾四周,到目前为止,我所尝试的一切似乎都不起作用……

代码语言:javascript
复制
    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.deskclock);

    TextView tvTime = (TextView) findViewById(R.id.tvTime);
    TextView tvDate = (TextView) findViewById(R.id.tvDate);

    java.util.Date noteTS = Calendar.getInstance().getTime();

    String time = "hh:mm"; // 12:00
    tvTime.setText(DateFormat.format(time, noteTS));

    String date = "dd MMMMM yyyy"; // 01 January 2013
    tvDate.setText(DateFormat.format(date, noteTS));

我基本上希望setText方法每秒钟更新一次或刷新一次,这样我的时钟就可以正常工作了。我见过handlers和run这样的方法,但都不起作用,所以在这方面有任何帮助都将是非常感谢的。:)

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2013-02-11 23:06:28

在onCreate()方法中添加以下代码:

代码语言:javascript
复制
Thread thread = new Thread() {

  @Override
  public void run() {
    try {
      while (!thread.isInterrupted()) {
        Thread.sleep(1000);
        runOnUiThread(new Runnable() {
          @Override
          public void run() {
            // update TextView here!
          }
        });
      }
    } catch (InterruptedException e) {
    }
  }
};

thread.start();

这段代码启动了一个每轮休眠1000毫秒的线程。

票数 110
EN

Stack Overflow用户

发布于 2016-03-10 21:39:09

这是一个非常古老的问题,我相信有很多资源。但是,为了安全起见,传播消息永远不会太多。目前,如果其他人想要实现OP要求的内容,您可以使用:android.widget.TextClock

TextClock documentation here

下面是我使用的代码:

代码语言:javascript
复制
<android.widget.TextClock
    android:id="@+id/digitalClock"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:timeZone="GMT+0000" <!--Greenwich -->
    android:format24Hour="dd MMM yyyy   k:mm:ss"
    android:format12Hour="@null"
    android:textStyle="bold"
    android:layout_alignParentEnd="true" />
票数 28
EN

Stack Overflow用户

发布于 2016-12-06 15:11:54

如果你想在文本视图上显示时间,最好使用ChronometerTextClock

使用天文学家的:这是在API1中添加的。它有很多选项可以自定义它。

Your xml

代码语言:javascript
复制
<Chronometer
    android:id="@+id/chronometer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="30sp" />

Your activity

代码语言:javascript
复制
Chronometer mChronometer=(Chronometer) findViewById(R.id.chronometer);
mChronometer.setBase(SystemClock.elapsedRealtime());
mChronometer.start();

使用TextClock:这个小部件是在API17级引入的。我个人很喜欢天文台。

Your xml

代码语言:javascript
复制
<TextClock
    android:id="@+id/textClock"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="30dp"
    android:format12Hour="hh:mm:ss a"
    android:gravity="center_horizontal"
    android:textColor="#d41709"
    android:textSize="44sp"
    android:textStyle="bold" />

就是这样,你的任务完成了。

您可以使用这两个小部件中的任何一个。这会让你的生活变得轻松。

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14814714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档