2011-12-16 106 views
0

我正在寻找一种在应用中导航的方法,可以抛出具有虚拟dpad的所有元素。但是,我如何在上下左右的方向上找到最近的邻居呢? 例如,我收到了一个事件,现在我想将焦点设置在下面的按钮上。Android:如何在给定的方向找到最近的邻居(视图元素)

我不想使用定义的XML文件是这样的:

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

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

</LinearLayout> 

我怎么能这样做?

Thx。

回答

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); 

这就是所有,内部algortihm找到下一个元素你选择的方向

0

为此,您应该重写onKeyDown()方法Activity,那里你可以找到方法View.getFocusedChild()目前集中视图,然后使用View.focusSearch(int)搜索下一个视图,并View.requestFocus()用于获取焦点。

我希望我找到了聪明的解决方案(例如,用于下去),你可以结合这个方法好成绩:)

+0

我搜索一个聚焦元素的方法,它让我在特定方向上的邻居元素将焦点设置在找到的元素上。 – NitroBoarder 2011-12-16 13:39:19