让RadioGroup检查ACTION_DOWN上的按钮

时间:2012-06-10 17:18:04

标签: java android

我设法通过在每个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);
}

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

1 个答案:

答案 0 :(得分:1)

我知道如何操作的唯一方法是在物理上更改监听器中的代码。在开发Android时,我不是最聪明的人,但默认构造函数设置附加到RadioButtons的框以检查发布。

除非别人知道我不知道的事情,否则你必须修改监听器类,或者在唤起监听器之后修改条目(通过添加你的actionDownCheker)。就个人而言,如果是我,我只会复制并粘贴你的actionDownChecker,这样你的监听器类就不会搞砸你的下一个项目。

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