我知道我可以通过调用 performClick 在代码中手动触发按钮的 OnClickListener.onClick ,但这似乎并没有让它在被点击时在视觉上出现。我正在寻找一种方法来手动使按钮看起来好像已被单击。我是否需要手动更改背景可绘制和无效(然后在 Handler.postDelayed 调用中再次将其更改回来),或者是否有更框架式的方法来执行此操作?

编辑

我知道如何使按钮具有不同的可绘制对象以在用户启动按下时显示为按下。问题是这样的:

是否有一种简单的方法可以使按钮在用户未实际按下时以编程方式显示为按下状态?

解决方案

我只是将 Button 子类化,并使按钮知道它作为 StateListDrawable 的正常背景和用作按下状态的 Drawable。我公开了一个将背景手动设置为“按下”可绘制对象的方法,并且我使用 Handler.postAtTime 让它返回到它的正常背景,以便在我完成后它可以再次用作常规按钮。

最佳答案

虽然这个问题很老了,但我想我还是会回答它。您不需要子类化 View 。首先调用 performClick() ,视觉提示不会持续很长时间,但是你可以通过 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/

10-12 02:29