图库捕获轨迹球导航

时间:2011-04-12 05:26:09

标签: android

图库水平捕捉轨迹球/ 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 个答案:

答案 0 :(得分: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);
    }

}