Как управлять поведением трекбола в представлениях Android? - PullRequest
0 голосов
/ 27 мая 2009

У меня есть представление FrameLayout, которое содержит один (похожий на MapView) элемент управления и несколько дополнительных кнопок, перекрывающих его. (макет xml ниже).

Я хочу, чтобы пользователь мог панорамировать / прокручивать основной вид, используя не только сенсорный, но и трекбол. Проблема в том, что использование трекбола просто переключает фокус между всеми элементами управления на макете, и я не могу найти способ вместить onTrackballEvent в основной вид.

Любые предложения приветствуются, заранее спасибо.

<?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>

Ответы [ 2 ]

1 голос
/ 09 августа 2009

Хитрость заключается в том, чтобы переопределить dispatchTrackball в пользовательском представлении и получить события.

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 20 мая 2011

Панорамирование просто реализуется с помощью указанного выше свойства focusable, установите для атрибута focusview вида карты значение true, и оно действительно будет панорамировать карту с помощью трекбола, когда вы поместили вид карты в фокус.

...