Android setPressed 行为

发布于 2024-12-25 11:21:02 字数 281 浏览 0 评论 0原文

下面的代码尝试模拟击键:

button1.setPressed(true);
try {
Thread.sleep(500);
} catch(InterruptedException e) {
} 
button1.setPressed(false);

上面的代码对按钮没有任何作用,但

button1.setPressed(true);

它本身将按钮设置为按下状态。
为什么第一个片段对按钮没有影响?

The following code is an attempt to simulate a key stroke:

button1.setPressed(true);
try {
Thread.sleep(500);
} catch(InterruptedException e) {
} 
button1.setPressed(false);

The above does nothing at all to the button, but

button1.setPressed(true);

by itself sets the button to it's pressed state.
Why does the first snippet have no effect on the button?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

格子衫的從容 2025-01-01 11:21:02

回复较晚,但我的猜测是因为您阻塞了 UI 线程,因此在您再次禁用按下状态之前它不会更新 UI。

相反,你可以尝试类似的事情;

class MyClass extends Activity ... {
  private final Handler _handler = new Handler();
  ...
  void somefunc() {
    button1.setPressed(true);
    _handler.postDelayed(new Runnable() {
      @Override
      public void run() {
        button1.setPressed(false);
      }
    }, 500);
  }
}

祝你好运!

Late reply, but my guess would be because you are blocking the UI-thread, so it will not update the UI until you've already disabled the pressed state again.

Instead you could try something like;

class MyClass extends Activity ... {
  private final Handler _handler = new Handler();
  ...
  void somefunc() {
    button1.setPressed(true);
    _handler.postDelayed(new Runnable() {
      @Override
      public void run() {
        button1.setPressed(false);
      }
    }, 500);
  }
}

Good luck!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文