0

アプリでナビゲートする方法を探しており、仮想 dpad を使用してすべての要素をスローします。しかし、上下左右の方向で最近傍を見つけるにはどうすればよいでしょうか。たとえば、ダウンするイベントを受信したので、下のボタンにフォーカスを設定したいとします。

次のようなxmlファイルで定義を使用したくありません。

<LinearLayout android:orientation="vertical" ... >

    <Button android:id="@+id/top" android:nextFocusUp="@+id/bottom" ... />
    <Button android:id="@+id/bottom" android:nextFocusDown="@+id/top" ... />

</LinearLayout>

どうやってやるの?

どうも。

4

2 に答える 2

0

私は賢い解決策を見つけました(例えば、ダウンするために):

bic=new BaseInputConnection(this.getWindow().getDecorView(),false);
KeyEvent event2 = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_DOWN,0, KeyEvent.META_SYM_ON, 0, 0, KeyEvent.FLAG_VIRTUAL_HARD_KEY); 

bic.sendKeyEvent(event2);

以上で、内部アルゴリズムは選択した方向の次の要素を見つけます

于 2011-12-21T17:28:38.283 に答える
0

このためには、 のonKeyDown()メソッドをオーバーライドする必要があります。メソッドでActivity現在フォーカスされているビューを見つけ、次のビューを検索してフォーカスを取得するためView.getFocusedChild()に使用できます。View.focusSearch(int)View.requestFocus()

この方法を組み合わせて良い結果が得られることを願っています:)

于 2011-12-16T12:57:40.740 に答える