我知道我可以通过调用 performClick 在代码中手动触发 Button 的 OnClickListener.onClick,但这似乎并没有使它在被单击时直观地显示出来。我正在寻找一种方法来手动使按钮看起来好像已被单击。我是否需要手动更改背景可绘制对象并使之无效(然后在调用 Handler.postDelayed 时再次将其更改回来),或者是否有更多框架式的方法来执行此操作?
编辑
我知道如何使按钮具有不同的可绘制对象,以在用户启动按下时显示为已按下。问题是这样的:
有没有一种简单的方法可以让按钮在用户没有实际按下时以编程方式显示为已按下?
解决方案
我只是将 Button 子类化,并让按钮知道它的正常背景是 StateListDrawable 和用作按下状态的 Drawable。我公开了一种手动将背景设置为“按下的”可绘制对象的方法,并且我使用 Handler.postAtTime 让它恢复到正常背景,这样当我完成后它可以再次用作常规按钮。
最佳答案
虽然这个问题很老了,但我想我还是会回答的。您不需要子类化 View 。先调用performClick()
,visual cue不会持续太久,但是可以通过view.setPressed(true);
设置按钮的按下状态,然后重新设置像这样几毫秒后。
handler.postDelayed(new Runnable() {
@Override
public void run() {
view.setPressed(false);
}
}, 100);
关于Android:Button.performClick 的可视化版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5334701/