2

我在屏幕上添加了另一个片段。此屏幕已经在 SupportMapFragment 中有 en MapView,因此添加的 Fragment 应该位于 MapView 的顶部。这个新视图覆盖了屏幕的 2/3 和地图的很大一部分,但是当我在视图上滚动时,它会滚动下面的 MapView。这不是我所期望的,因为新视图添加在 MapView 之上。新视图存在一个包含包含其内容的 ImageView 的相对布局。因此,当在 imageview(完全没有功能)上滚动时,它会滚动 MapView。谁能解释为什么会发生这种情况,如果可能的话,为我提供解决方案吗?

编辑:

基本上我有一个填满整个屏幕的 MapView。此代码设置我的地图视图:

public void setUpMapIfNeeded(int satelliteMode, LatLng startPoint, float zoomLevel) {
        // Do a null check to confirm that we have not already instantiated the map.
        if (mapView == null) {
            // Try to obtain the map from the SupportMapFragment.
            mapView = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapview))
                    .getMap();
            // Check if we were successful in obtaining the map.
            if (mapView != null) {
                setUpMap(satelliteMode, startPoint, zoomLevel);
            }
        }
    }

    private void setUpMap(int satelliteMode, LatLng startPoint, float zoomLevel) {
        // more settings
        }

然后,当用户单击标记时,必须在地图视图的顶部显示一个片段。

public void createDetailView() {
        detailView = new DetailViewFragment();
        android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
        android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.add(R.id.viewLayout, detailView).commit();
        fragmentManager.executePendingTransactions();
    }

这一切都很好。显示视图(大约是整个屏幕的 2/3),但用户可以在滑动详细视图时滚动地图。detailview 包含一个包含大量文本和按钮的相对布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:layout_marginTop="45sp">


<!-- a lot of text and buttons here -->

</RelativeLayout>
4

3 回答 3

0

So I still havent found a proper way to deal with this. Instead I just disabled all touches and clicks on the mapview when another view is on top of the mapview which btw works ok.

于 2013-03-27T11:42:39.123 回答
0

以防万一它可能仍然相关,我处理这种布局的方式(一个视图出现在另一个视图“顶部”)是使用以下方式LinearLayout而不是 a :RelativeLayout

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <SomeView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

    <PopOutView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:visibility="gone" />

</LinearLayout>

在您的情况下,地图将是那个SomeView,而相对布局是PopOutView. 然后在代码中,popOutView.setVisibility = View.VISIBLE只要您希望它出现,您就可以调用它。它缩小了第一个视图,而不是在顶部绘制(因此有一点不同的视觉效果),但至少这样触摸事件应该转到正确的视图。

于 2013-06-14T08:32:21.810 回答
0

将片段的布局可点击属性设置为 true。它将阻止触摸事件向下传播。

<FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#FFF"
    android:clickable="true">
</FrameLayout>
于 2016-07-28T03:20:26.593 回答