Pergunta

Eu tenho uma visão FrameLayout que contém um alguns botões adicionais sobrepondo-o de controle (MapView-like) e. (O xml layout é abaixo).

Eu quero permitir que o usuário pan / rolar a tela principal usando não apenas tocar, mas também a trackball. O problema é -. Usando o trackball apenas muda o foco entre todos os controles do layout, e eu não consigo encontrar uma maneira de conter o onTrackballEvent para apenas o MainView

Todas as sugestões são bem-vindas, obrigado antecipadamente.

<?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>
Foi útil?

Solução

O truque é substituir o dispatchTrackball em sua exibição personalizada, e pegue os eventos.

Espero que isso ajude alguém.

Outras dicas

O deslocamento é simplesmente implementado por como mencionado antes que a propriedade focusable, definir o atributo focalizável do seu mapview a verdade e ele vai realmente movimentar o mapa com o trackball quando tiver colocado o mapview em foco.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top