Официальная документация для MapView
здесь прямо говорит
Примечание. Рекомендуется не добавлять детей в это представление.
Этоозначает, что MapView
пользовательские внутренние представления поддерживаются только частично или не поддерживаются вообще.Я бы не рекомендовал вам использовать что-то, что плохо поддерживается, так как это может привести к странным ошибкам, как у вас.Особенно в MapView
с его сложным сенсорным слушателем и обширным внутренним пользовательским интерфейсом - вы можете легко что-то сломать (например, увеличение или смахивание камеры с помощью ScrollView
)
Честно говоря, я не уверен, почему вы это делаете- Вы можете легко разместить все необходимые представления в обычном FrameLayout
, и все будет работать нормально (за исключением, может быть, ScrollView
процессор жестов смахивания может нарушить MapView
жесты)
Так что было бы разумнее сделать этовот так
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.company.com.library.mapbox.MyMapView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/mapView"/>
<FrameLayout
android:id="@+id/wrapper_layout"
android:layout_width="50dp"
android:layout_height="250dp"
android:layout_gravity="right"
android:layout_marginTop="100dp">
<ScrollView
android:id="@+id/level_scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/level_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
</ScrollView>
</FrameLayout>
</FrameLayout>
Таким образом, вы сможете использовать все возможности MapView
и FrameLayout
по отдельности.Не забудьте обработать изменения жизненного цикла для MapView
вашего фрагмента / действия, как сказано здесь .
Вы также можете заметить, что я завернул ScrollView
с FrameLayout
и дал этому макету обертки вес и высоту, в то время как ScrollView
имеет match_parent
.Я сделал это, потому что ScrollView
с определенной высотой и шириной может быть настоящей болью в заднице и весьма подвержен ошибкам, поэтому для таких целей рекомендуется обернуть его в какой-то другой макет.
Хотя этоне точное решение вашей проблемы, я надеюсь, что этот ответ поможет вам.