2011-04-12 89 views
0

畫廊捕捉軌跡球/ dpad導航水平。畫廊捕捉軌跡球導航

下面是一個例子佈局按鈕上的畫廊兩側:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <Gallery 
     android:layout_height="match_parent" 
     android:id="@+id/gallery" 
     android:layout_width="match_parent" 
     android:layout_weight="1" /> 
    <Button 
     android:id="@+id/button2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 

當您導航到你無法逃避到兩邊的按鈕軌跡球畫廊。我試圖在畫廊中添加android:nextFocusLeft =「@ id/button」。我也嘗試將其添加到畫廊的適配器中的第一個視圖。

有沒有辦法解決這個問題?

回答

1

我想通了,這是一個圖庫中的錯誤。解決方法是擴展Gallery,如下所示:

public class DpadableGallery extends Gallery { 

    public DpadableGallery(Context context) { 
     super(context); 
    } 
    public DpadableGallery(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     switch (keyCode) { 
     case KeyEvent.KEYCODE_DPAD_LEFT: 
      if (getSelectedItemPosition()==0) { 
       return false; 
      } 
      break; 
     case KeyEvent.KEYCODE_DPAD_RIGHT: 
      if (getSelectedItemPosition()==(getAdapter().getCount()-1)) { 
       return false; 
      } 
     } 

     return super.onKeyDown(keyCode, event); 
    } 

}