2016-11-11 82 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回調其固定的問題,我內強制滾動型頂端。