2011-06-09 61 views
4

我想在地图上实现像地点(我更感兴趣的是如何将该屏幕放置在屏幕的右侧/左侧)的弹出/覆盖屏幕。应用程序(下图)。我可以创建一个活动并使用对话框主题,这主要解决我的问题,但它放置在屏幕中心。有人有什么更好的想法,我怎么能创建一个弹出式/覆盖屏幕像非地图应用程序中的地方,并放置在屏幕的顶部/右侧?我猜他们是用地图叠加来做的。在android蜂巢中的弹出/覆盖屏幕

Places in map

回答

4

好,这里就是我所做的......我用的FrameLayout叠加一个的LinearLayout,我可以用一个视图填充它。下面是我的代码的摘录:

XML:

<FrameLayout 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:layout_weight="1"> 

    <fragment class="com.some.location.to.fragment" 
      android:id="@+id/fragment" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 

    <LinearLayout 
      android:id="@+id/overlay_pane" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:visibility="gone" 
      android:background="@color/transparent"> 

     </LinearLayout> 

</FrameLayout> 

然后在我的一些按钮的代码,我想补充一个视图(在你的情况下,它可以只是对话框的内容)到overlay_pane的LinearLayout 。

Java示例:

ViewGroup container = findViewById(R.id.overlay_pane); 
container.setVisibility(View.VISIBLE); 
container.addView(some_view_you_inflated); 

但这种膨胀的观点将有以下背景:@绘制/ dialog_full_holo_light对于像蜂窝式的一个很好的边框效果。

你可以找到你的SDK的背景绘制在以下文件夹

your_SDK_dir /平台/ Android的12 /数据/ RES /提拉 - 华电国际/ dialog_full_holo_light.9.png

所以把它复制到你的drawable中。

注意:您也可以使用dialog_full_holo_dark或任何自定义背景来达到同样的效果。

我希望帮助:)让我知道,如果我是不清楚的任何一点

:不要使用片段,你可以仅仅使用LinearLayout中与match_parent两个layout_width和layout_height。然后你会用“背景”UI填充LinearLayout(在问题的例子中,这将是地图)

+1

还有一件事..你可以通过使用android:layout_gravity属性来控制叠加层的出现位置你膨胀的观点 – kwazi 2011-06-09 16:02:38

+0

感谢这个想法(我试图从另一个角度去做),当我有一点点时间时,我会尝试它。我需要将覆盖层放在tabhost上,但希望不会搞砸任何东西。 – Alex 2011-06-10 09:21:45

+0

XML中的片段是做什么的?我有点新的碎片,我很困惑,因为你没有发布Java的com.some.location.to.fragment – CACuzcatlan 2011-07-11 17:44:00