2011-12-16 128 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

相關問題