2010-10-12 86 views
0

我正在创建ItemizedOverlay的扩展。当用户在地图上点击一个pin(onTap)时,我想显示一个RelativeLayout,它与地图包含在同一个.xml文件中。当RelativeLayout可见时,它覆盖地图。从扩展的ItemizedOverlay访问Android视图?

由于此视图是主类的上下文,因此我不知道如何从onTap()调用中访问视图(DetailLayout)。

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

回答

0

如果您ItemizedOverlay是一个内部类的MapActivity的,只需要调用findViewById()Here is a sample project来自我的一本书,展示了你正在尝试做的事情。

+0

此刻,我没有将ItemizedOverlay作为MapActivty的内部类...我可以移动它,但会看到我还能完成什么。现在,我可以通过日志(“Detail Here。Detail Here。”)读取默认的TextView文本,但是我无法将视图显示在屏幕上,因为它显示“addView”无法在其中识别ItemizedOverlay。 – Chris 2010-10-13 18:39:42

+0

@Chris:“目前,我没有将ItemizedOverlay作为MapActivty的内部类” - 您也可以将'MapActivity'作为您的'ItemizedOverlay'的构造函数参数传递。 “但是我无法将视图显示在屏幕上,因为它表示在ItemizedOverlay中无法识别”addView“。” - 正确。您不想将其添加到叠加层。你想把它添加到你在'MapActivity'中提供给'setContentView()'的任何东西。或者,它始终在那里,并根据需要在可见和消失之间切换。 – CommonsWare 2010-10-13 18:47:18