質問

アプリにリストがあります。

ユーザーが指でリスト項目を触れたとき、onlistitemclickハンドラーが発火し、新しいアクティビティを開くことができます。

ただし、ユーザーがトラックボール/パッドを使用してクリックすると、異なる機能を実行する必要があります。 Ontrackballeventをオーバーロードしましたが、エミュレータのトラックボールモードではすべてが完全に正常に機能します。

残念ながら、Samsungの瞬間をテストするとき、トラックパッドをクリックすると、OnTrackballeventハンドラーではなく、onlistitemclickハンドラーが発射されます。

誰かが理由を知っていますか?誰かがこれを回避する方法を持っていますか?

役に立ちましたか?

解決

ListViewでは、KeyCodeがkeyEvent.keycode_dpad_centerの場合、setonkeylistenerを作成できます。

listview.setOnKeyListener(new OnKeyListener() {

            public boolean onKey(View v, int keyCode, KeyEvent event) {
               switch(keyCode){
                 case KeyEvent.KEYCODE_DPAD_CENTER:
                    if(event.getAction()==KeyEvent.ACTION_UP){ //to do it only when key is released 
                   // do the code while trackball/pad is clicked
                    }
                   return true;
                 default:
                    return false;
                 }
              }
         }
});

それは私のために働きます。これがあなたにいくつかのアイデアを与えることを願っています

他のヒント

オーバーライドしてみてください dispatchTrackball イベントとそれらのイベントをつかみます。また、ただの提案 - すべてのAndroid携帯がトラックボールを持っているわけではないので、トラックボールで別のアクションを使用しません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top