android button setPressed after onClick

标签 android button state

昨天我注意到可以通过兼容性包将 Fragments 集成到旧的 API 级别中,但这对这个问题来说并不是真正必要的。 :)

我有一个带有 OnClickListener 的按钮

Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        doSomething();
        button.setPressed(true);
    }
});

因为实际点击时,显示为按下,松开后,按钮状态为未按下,保持该状态。

有没有一种简单的方法可以在释放后保持按钮状态按下? 我首先想到的是某种计时器,但这似乎不合理。

最佳答案

请注意,这是因为 Android 在您的 onClickEvent 之前和之后都更改了 setPressed,因此您自己更改它没有任何效果。解决此问题的另一种方法是使用 onTouchEvent

button.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {

        // show interest in events resulting from ACTION_DOWN
        if (event.getAction() == MotionEvent.ACTION_DOWN) return true;

        // don't handle event unless its ACTION_UP so "doSomething()" only runs once.
        if (event.getAction() != MotionEvent.ACTION_UP) return false;

        doSomething();
        button.setPressed(true);                    
        return true;
   }
});

关于android button setPressed after onClick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5975168/

相关文章:

reactjs - react : Passing props to parent returns <empy string>

java - if语句只检查一次

android - 如何在android中检查 ListView 中的项目?

java - 构建错误(将字节码转换为 dex 时出错)

java - android 文件下载在pie版本中不起作用

button - 一个正方形可以有两个按钮吗?

android - 显示特定页面时ViewPager隐藏按钮

reactjs - React 中的状态逻辑和状态有什么区别?

scroll - 调试帮助 : Flutter StatefulWidget doesn't maintain state(s) after scrolled out of view

android - 将视频从安卓相机流式传输到电脑?