2009-05-27 4 views
0

Ich habe eine FrameLayout-Ansicht, die ein (MapView-ähnliches) Steuerelement und einige zusätzliche Schaltflächen enthält, die es überlagern. (Das Layout-XML ist unten).Wie lässt sich das Trackballverhalten in Android Views steuern?

Ich möchte dem Benutzer erlauben, die Hauptansicht nicht nur durch Berührung, sondern auch durch den Trackball zu verschieben. Das Problem ist - mit dem Trackball nur den Fokus zwischen allen Steuerelementen auf dem Layout schaltet, und ich kann nicht scheinen, einen Weg zu finden, um nur die MainView onTrackballEvent zu enthalten.

Alle Vorschläge sind willkommen, danke im Voraus.

<?xml version="1.0" encoding="utf-8"?> 

<merge xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="fill_parent"> 
<FrameLayout android:id="@+id/pageView" 
    xmlns:panel="http://schemas.android.com/apk/res/com.yappa" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <MainView 
     android:id="@+id/mainView" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 
    </MainView> 


    <ZoomControls android:id="@+id/ZoomControls01" 
     android:layout_gravity="bottom|center" 
     android:layout_height="wrap_content" android:layout_width="wrap_content"> 
    </ZoomControls> 

    <Panel 
      .... 
    </Panel> 

</FrameLayout> 

</merge> 
+0

Haben Sie versucht, mit der 'android: focusable' Eigenschaft zu spielen? – Ari

+0

Fokussierbar steuert, wie Sie von einem Steuerelement zu einem anderen wechseln. nicht was ich in der Frage gemeint habe – reflog

Antwort

1

Der Trick ist, die dispatchTrackball in Ihrer benutzerdefinierten Ansicht außer Kraft zu setzen, und die Ereignisse greifen.

Ich hoffe, das hilft jemandem.

+0

Hey Reflog, ich bin in der gleichen Situation, kann ich einen Beispielcode haben? – Shardul

0

Das Verschieben wird einfach wie bereits erwähnt durch die fokussierbare Eigenschaft implementiert, setzen Sie das fokussierbare Attribut Ihrer Mapview auf true und es wird die Map tatsächlich mit dem Trackball schwenken, wenn Sie die Mapview scharf gestellt haben.

Verwandte Themen