根据滚动位置移动ListView或MapFragment

时间:2014-02-14 18:47:04

标签: android android-listview

好的,标题很乱,但这是概念。

当Activity启动时,它看起来像这样: Start

如果在ListView到达顶部时继续拉下来,Map会变得更大,如下所示: ListView bottom

但是如果你在ListView中向下滚动,Map会变小,如下所示: Map top

现在这可以在Android上实现。谢谢你的回复:D

2 个答案:

答案 0 :(得分:0)

这是可能的。您这样做的方法是首先确定用户滑动的方向。您可以将列表视图和地图放在两个单独的片段中,然后通过添加SimpleOnGestureListener确定用户在任一片段上滑动(出于您的目的,您将处理垂直滑动)。

然后,您可以根据具体情况以编程方式将片段的权重设置为更大/更小。由于您的列表和地图将位于两个单独的容器中(可能是片段,LinearLayout,RelativeLayout等)。在我确定您以这种方式继续之前,我需要更多详细信息。但要回答你的问题,是的,这是可能的。我建议你调查以下两个链接以获得更好的想法,然后确定如何继续(它可能与你的情况不一样,但你至少会得到一般的想法):

How to detect swipe direction between left/right and up/down

How to add Action bar options menu in Android Fragments

答案 1 :(得分:0)

当您滚动列表时,您当然可以更改地图大小,但我认为性能不会很好。谷歌地图通常需要一段时间来渲染,你无法真正控制它。如果您想要这条路线,请尝试在地图视图上设置新的LayoutParams。

另一种选择是用ImageView替换地图。地图api支持snapshot() method。然后,您需要在滚动时用图像无缝替换地图。

第三个选项是Google地图的功能。基本上,你有一个填充屏幕的地图,然后是一个从底部出来并覆盖地图的滑动布局。此抽屉向上滑动,然后地图重新居中,以便可见的任何部分显示标记。这可能是任何选项的最佳表现。