0

Androidで矢印キーイベントを制御したいと思います。Samsung I5500 電話でアプリをテストしています。アプリはタブで構成されています。リスナーを使用してイベントをキャプチャすることに成功しました。

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    Log.i(TAG_NAME, "key event: " + keyCode);
    if(keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
        Log.i(TAG_NAME, "Directional centre pad pressed");
    }
}

たとえば、3 番目のタブのアクティビティには 3 つの項目のリストビューが含まれています

Item A
Item B
Item C

右矢印を使用して 3 番目のタブに移動し、下矢印をクリックして上記の項目のいずれかを選択します。DPAD_CENTER キーをクリックすると、listView にアタッチされた ItemClick リスナーがトリガーされます。今まではすべて順調です。ただし、その後、現在のタブ フォーカスはホーム (タブ 0) に移動します。別のタブにあるため、UI をレンダリングしようとするアダプターはロードに失敗します。やがて崩れ落ちる。

誰もこれを経験したことがありますか?インターネットで検索しました。十分な価値のあるものは見つかりませんでした。

4

1 に答える 1

0

DPAD キーを使用してさまざまな UI 項目にフォーカスを当てることを検討している場合は、XML レイアウトを設計して、どのビューにフォーカスするかを理解する必要があります。http://developer.android.com/reference/android/view/View.html#FocusHandlingを参照してください

要素ごとに nextFocusUp/nextFocusDown/nextFocusRight/nextFocusLeft を指定する必要があります。

ListViews と Tabs にはデフォルトの実装があり、同じ理由でリスト ビューを上下にスクロールできます。

これらのガイドラインに従うことで、DPAD イベントに対するアプリの応答性が向上し、シームレスなユーザー操作が提供されます (AIR マウス/dpad コントローラーなどを使用する場合)。

于 2013-03-18T10:53:51.440 に答える