2

我设法通过在每个 RadioButton 上添加“actionDownChecker”来做到这一点。

private View.OnTouchListener actionDownChecker = new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            if (motionEvent.getAction() == MotionEvent.ACTION_DOWN){
                mTabbar.check(view.getId());
            }
            return true;
        }
    };

public void add(int radioButtonResourceId, Class<? extends Fragment> contentClass) {
    mContent.put(radioButtonResourceId, new TabInfo(radioButtonResourceId, contentClass));
    //hack to check radio button on ACTION_DOWN, not UP!
    mTabbar.findViewById(radioButtonResourceId).setOnTouchListener(actionDownChecker);
}

还有另一种更优雅的方法吗?

4

1 回答 1

1

我知道如何做到这一点的唯一另一种方法是物理更改侦听器中的代码。在为 android 开发时,我不是最聪明的人,但默认构造函数设置附加到 RadioButtons 的框以检查发布。

除非其他人知道我不知道的事情,否则您要么必须修改侦听器类,要么在触发侦听器后修改条目(通过添加您的 actionDownCheker)。就我个人而言,如果是我,我只会复制并粘贴你的 actionDownChecker,这样你的监听器类就不会为你的下一个项目搞砸了。

我敢肯定有一些应用程序,但我不确定你为什么要这样做。如果有人按下了错误的按钮,他们可以在释放按钮之前移开按钮以取消按下。

于 2012-06-10T17:50:00.173 回答