0

私には選択肢がありません。誰かがもっとよく知っているかもしれません。私の問題は、ScrollView (descentand) があり、そこに View (子孫) を挿入することです。スクロール領域の原点に到達するまで上にスクロールしたい (ビューが上がる、指が下がる) 場合を除き、すべて問題ありません。

この奇妙な動作は、次のコードが原因であることがわかりました。

myScrollView.setOnTouchListener(new OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
        Log.d("myapp", "onTouch");
        if (event.getAction() == MotionEvent.ACTION_UP 
            || event.getAction() == MotionEvent.ACTION_CANCEL) return true;
        return false;
    }

});

ステートメントをコメントアウトするifと、問題は解決します。このコード行が何をするのかさえわかりません。「スローダウン」の運動量効果を無効にすることになっていると思います。(私のアプリケーションでは望ましくないため)。数か月前に、誰かのサンプルからこのコードをコピーして貼り付けたと思います。

したがって、問題は、「onDraws の永遠のループ」を削除し、「スローダウン効果のない」コードを維持する方法です。

4

1 に答える 1

0

返されるブール値の意味は、次のように文書化されています。

リスナーがイベントを消費した場合は true、それ以外の場合は false。

本当に説明していません。「消費」とは、他のリスナーがイベントを見る必要がないことを意味します。「消費されない」とは、リスナーが後続の関連イベントを認識しない可能性があることを意味します。

このコードが何を意図していたのかは、私にははっきりしません。間違いなく、2 種類のイベントを消費しているだけです。event.getAction()ただし、ログに追加して、何が起こっているかを確認できます。私が覚えているように、Android のバージョンが異なれば、同じジェスチャに対して生成されるイベントのシーケンスも少し異なる場合があります。

于 2013-06-10T06:35:37.393 に答える