0

Adaptarで埋めるカスタムListViewを取得しました。アプリケーション中に、リスト内のアイテムはステータスに応じて変化するため、ImageViewを次のように更新しています。

mStatusIcon = (ImageView) findViewById(R.id.imgStatusIcon);
mStatusIcon.setImageResource(R.drawable.icon_cancel);

ここまでは順調ですね。問題は、レイアウトの特定の部分にある種のフォーカス/ホバー状態が必要なことです。レイアウトxmlでを設定しましたOnTouchListener()View mHitfield

関連するすべてのアクションをキャッチできます:ACTION_MOVE、、、。ACTION_DOWNACTION_UPACTION_CANCEL

問題は、私ImageView mStatusIconが次の行動を変えるとき、私が捕まえるのは常にであるということACTION_CANCELです。

View mHitfield = (View) findViewById(R.id.outerShape);

mHitfield.setOnTouchListener(new OnTouchListener() 
{

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

        int currentAction = event.getAction();

        switch(currentAction)
        {
            case MotionEvent.ACTION_DOWN:   
            case MotionEvent.ACTION_MOVE:

                // if I comment out these lines I keep receiving all actions
                // if I don't, I only receive ACTION_DOWN followed by ACTION_CANCEL
                mStatusIcon.setImageResource(R.drawable.icon_download_normal);
                break;

            case MotionEvent.ACTION_UP:
            case MotionEvent.ACTION_CANCEL: 

                // if I comment out these lines I keep receiving all actions
                // if I don't, I only receive ACTION_DOWN followed by ACTION_CANCEL
                mStatusIcon.setImageResource(R.drawable.icon_download_hover);
                break;
        }

        return false;
    }
});

誰かが私にこれが起こっている理由とこれを回避する方法があるかどうかを説明できますか?

4

1 に答える 1

0

なぜそれが起こったのかはまだよくわかりませんが、作成されたカスタムビュー内でレイアウトが更新されたため、TouchEventがキャンセルされたようです。カスタムビューを使用せずにXMLレイアウトを作成すると、問題は発生しなくなりました。

于 2012-08-20T16:03:56.447 に答える