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

为此,您应该覆盖onKeyDown()方法,在Activity那里您可以使用方法找到当前聚焦的视图View.getFocusedChild(),然后View.focusSearch(int)用于搜索下一个视图并View.requestFocus()获得焦点。

我希望您可以结合使用这些方法以获得良好的效果:)

于 2011-12-16T12:57:40.740 回答
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 回答