谷歌地图片段内scrollView

所以我一直在尝试使用谷歌地图精简版fragmentscrollView ,我一直无法显示地图。 在移除scrollView并将它自己留下的片段之后,现在可以看到地图了。 我只是想明白为什么是这样,如果有任何可能有这个片段显示在我的scrollView结束。

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:map="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.joe.goout.EventDetails"> <ImageView android:src="@mipmap/park1" android:layout_width="fill_parent" android:layout_height="150dp" android:scaleType="centerCrop" android:adjustViewBounds="true" android:id="@+id/imageView" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" /> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/imageView" android:id="@+id/scrollView" android:fillViewport="false"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Medium Text" android:id="@+id/textView" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> </ScrollView> </RelativeLayout> 

Solutions Collecting From Web of "谷歌地图片段内scrollView"

首先,您需要创build一个自定义ScrollView类,如下所示。

 public class CustomScrollView extends ScrollView { public CustomScrollView(Context context) { super(context); } public CustomScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public CustomScrollView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { final int action = ev.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: //Log.i("CustomScrollView", "onInterceptTouchEvent: DOWN super false" ); super.onTouchEvent(ev); break; case MotionEvent.ACTION_MOVE: return false; // redirect MotionEvents to ourself case MotionEvent.ACTION_CANCEL: // Log.i("CustomScrollView", "onInterceptTouchEvent: CANCEL super false" ); super.onTouchEvent(ev); break; case MotionEvent.ACTION_UP: //Log.i("CustomScrollView", "onInterceptTouchEvent: UP super false" ); return false; default: //Log.i("CustomScrollView", "onInterceptTouchEvent: " + action ); break; } return false; } @Override public boolean onTouchEvent(MotionEvent ev) { super.onTouchEvent(ev); //Log.i("CustomScrollView", "onTouchEvent. action: " + ev.getAction() ); return true; } } 

然后使用CustomScrollView类而不是ScrollView

 <CustomScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/scrollView"> </CustomScrollView> 

你完成了! :d

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/white"> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <ImageView android:id="@+id/imageView" android:layout_width="fill_parent" android:layout_height="150dp" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_centerInParent="true" android:adjustViewBounds="true" android:scaleType="centerCrop" android:src="@mipmap/park1" /> <Button android:id="@+id/shareBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/textView" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:text="New Button" /> <TextView android:id="@+id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/imageView" android:padding="15dp" android:text="Medium Text" android:textColor="@color/black" /> <fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:map="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/map" android:name="com.google.android.gms.maps.SupportMapFragment" class="com.google.android.gms.maps.SupportMapFragment" android:layout_width="fill_parent" android:layout_height="210dp" android:layout_below="@id/textView" android:layout_marginBottom="40dp" map:cameraZoom="13" map:liteMode="true" map:mapType="normal" tools:context=".EventDetails" /> </RelativeLayout> </ScrollView> </RelativeLayout> 

我通过将内容添加到ScrollView然后将内容包装在RelativeLayout解决了这个问题。

 <ScrollView android:layout_height="wrap_content" android:layout_width="match_parent" android:background="@color/white" xmlns:android="http://schemas.android.com/apk/res/android"> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <ImageView android:src="@mipmap/park1" android:layout_width="fill_parent" android:layout_height="150dp" android:scaleType="centerCrop" android:adjustViewBounds="true" android:id="@+id/imageView" android:layout_alignParentTop="true" android:layout_centerInParent="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Button" android:id="@+id/shareBtn" android:layout_above="@+id/textView" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" /> <TextView android:layout_height="wrap_content" android:layout_width="match_parent" android:text="Medium Text" android:textColor="@color/black" android:padding="15dp" android:layout_below="@id/imageView" android:id="@+id/textView" /> <fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:map="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:name="com.google.android.gms.maps.SupportMapFragment" class="com.google.android.gms.maps.SupportMapFragment" android:id="@+id/map" android:layout_width="fill_parent" android:layout_height="210dp" android:layout_below="@id/textView" android:layout_marginBottom="40dp" map:cameraZoom="13" map:mapType="normal" map:liteMode="true" tools:context=".EventDetails"/> </RelativeLayout> </ScrollView>