2010-10-12 13 views
0

Je crée une extension de ItemizedOverlay. Lorsqu'un utilisateur appuie sur une broche sur la carte (onTap), je veux afficher un RelativeLayout, qui est inclus dans le même fichier .xml que la carte. Lorsque le RelativeLayout est visible, il couvre la carte.Accéder à une vue Android depuis ItemizedOverlay étendu?

Étant donné que cette vue est le contexte de la classe principale, je ne sais pas comment accéder à la vue (DetailLayout) à partir de l'appel onTap().

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android"  
android:id="@+id/mainlayout"  
android:orientation="vertical"  
android:layout_width="fill_parent"  
android:layout_height="fill_parent" > 

    <com.google.android.maps.MapView 
     android:id="@+id/mapview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:clickable="true" 
     android:apiKey="MY KEY HERE" 
    />  



    <RelativeLayout 
     android:id="@+id/DetailLayout" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:gravity="left" 
     xmlns:android="http://schemas.android.com/apk/res/android"> 
      <LinearLayout 
       android:id="@+id/DetailCloseButtonLayout" 
       android:layout_width="fill_parent" 
       android:layout_height="36dp" 
       android:gravity="center_vertical|right" 
       xmlns:android="http://schemas.android.com/apk/res/android"> 
       <Button  
        android:id="@+id/DetailCloseButton"  
        android:background="@drawable/close" 
        android:layout_width="15dp"   
        android:layout_height="15dp" 
        android:layout_marginRight="10dp" 
        android:gravity="center_vertical"> 
       </Button> 
      </LinearLayout> 
      <TextView 
       android:text="Detail Here. Detail Here." 
       android:id="@+id/DetailTextView" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_below="@id/DetailCloseButtonLayout"> 
      </TextView> 

    </RelativeLayout>  

Répondre

0

Si votre ItemizedOverlay est une classe interne de votre MapActivity, il suffit d'appeler findViewById(). Here is a sample project d'un de mes livres montrant le genre de chose que vous essayez de faire.

+0

Pour le moment, je n'ai pas ItemizedOverlay en tant que classe interne de MapActivty ... Je pourrais déplacer les choses, mais je verrai ce que je peux accomplir d'autre. Actuellement, je suis capable de lire le texte TextView par défaut via un journal ("Détail ici. Détail ici."), Mais je ne suis pas en mesure d'afficher la vue sur l'écran, car "addView" n'est pas reconnu dans ItemizedOverlay. – Chris

+0

@Chris: "Pour l'instant, je n'ai pas ItemizedOverlay en tant que classe interne de MapActivty" - vous pouvez également passer le paramètre "MapActivity" en tant que paramètre constructeur de votre ItemizedOverlay. "mais je ne suis pas en mesure d'obtenir l'affichage à l'écran, comme il est dit" addView "n'est pas reconnu dans ItemizedOverlay." -- correct. Vous ne voulez pas l'ajouter à la superposition. Vous voulez l'ajouter à tout ce que vous avez fourni 'setContentView()' dans votre 'MapActivity'. Ou, il doit être là tout le temps, et basculer entre visible et parti au besoin. – CommonsWare

Questions connexes