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向けの開発に関しては、私は最も賢い人ではありませんが、デフォルトのコンストラクターは、R​​adioButtonsに接続されたボックスをリリース時にチェックするように設定します。

他の誰かが私が知らないことを知らない限り、リスナー クラスを変更するか、リスナーが呼び出された後に (actionDownCheker を追加して) エントリを変更する必要があります。個人的には、actionDownChecker をコピーして貼り付けるだけです。そうすれば、次のプロジェクトでリスナー クラスが台無しになることはありません。

いくつかのアプリケーションがあると確信していますが、なぜそれをしたいのかわかりません。誰かが間違ったボタンを押した場合、ボタンが離される前にボタンから離れて、押した操作をキャンセルできます。

于 2012-06-10T17:50:00.173 に答える