2016-11-11 108 views
0

我在滚动视图中使用Mapbox地图。在这个scrollview中,我有主LinearLayout,在这里面,我有5个不同的信息区域。该地图位于第三个区域。Mapbox - 避免自动中心

由于第一和第二区域中的数据量很大,在显示时,地图区域必须为而不是可见,并且要查看它,您需要滚动。

不幸的是,Mapbox似乎有一个“自动中心”系统:只要滚动视图开始显示,它的位置就会自动设置到地图的中心。 因此,用户必须回滚到滚动视图的顶部。 如何避免这种“初始位置功能”?

注意:这不是一个重复的问题:Using mapbox in scrollview, scrollview sliding to the position where mapbox is put in the page 因为问题不是“如何移动地图并且不移动滚动视图”。问题是滚动视图的初始位置。还有答案“do mScrollView.scrollTo(0,0);”是不可接受的,因此,scrollview首先集中在地图上,而AFTER则有一个滚动。

编辑:这里有两个图片和更多的细节。

Display in vertical mode

这第一扣显示垂直模式滚动视图。我有一个名为“INFORMAÇOES”的第一个区域,第二个区域名为“TIPO DEOCORENÇA”,第三个区域是地图,后面是另外两个区域。 由于区域1和区域2的大小,在垂直模式下,地图区域部分可见。此快照显示开始显示时的屏幕。

Snap in horizontal mode

该第二扣合是采取在同一时间,从而在显示的开始,但在水平模式。当然,可见数据量是不同的。我们可以看到,地图区域似乎强制滚动以便显示。

做了一些测试后,我发现奇怪的想法:当你滚动时,你通常在屏幕顶部设置数据的顶部。在地图的情况下,情况并非如此。在显示开始时出现的第一个元素是Mapbox徽标。

这里是XML部分:

 <LinearLayout 
      android:layout_margin="5dp" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center_horizontal" 
      android:orientation="vertical" 
      android:layout_below="@id/linearLayout_type" 
      android:id="@+id/linearLayout_map"> 

      <com.mapbox.mapboxsdk.maps.MapView 
       mapbox:zoom="12" 
       android:id="@+id/mapview_inter" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" /> 

     </LinearLayout> 

我做了测试:

1 - 把一个机器人:能见度com.mapbox.mapboxsdk.maps.MapView = “水涨船高”。这不被允许。

2 - 在com.mapbox.mapboxsdk.maps.MapView中放置android:visibility =“invisible”。这不被允许。

3 - 在地图的linearlayout(linearLayout)中放置一个android:visibility =“invisible”。什么都不变。地图不可见,但“滚动”发生。

4 - 在地图的linearlayout(linearLayout)中放置android:visibility =“gone”。在这种情况下,没关系:数据的“INFORMAÇOES”部分位于顶部。但他们没有渲染地图。所以,当我执行

LinearLayout tmp = (LinearLayout) findViewById(R.id.linearLayout_map); 
    tmp.setVisibility(View.VISIBLE); 

在地图上看到,我看到...什么:(

有什么建议?

+0

你可以添加图片/ GIF格式发生了什么?我不确定我是否理解这个问题。 – cammace

+0

我会在几分钟内做到这一点。最后的测试让我认为这是与Mapbox徽标的链接。 – Peter

回答

0

首先,你应该给一个或者您的LinearLayout特定DP大小或现在你正在使用match_parent两者的MapView。您可以通过使用scrollView.fullScroll(ScrollView.FOCUS_UP);OnMapReady回调其固定的问题,我内强制滚动型顶端。