2016-08-23 13 views
8

Tak więc próbowałem użyć google maps lite fragment wewnątrz scrollView i nie mogłem pokazać mapy. Po usunięciu scrollView i pozostawieniu fragmentu przez siebie, teraz jest, kiedy możesz zobaczyć mapę. Po prostu próbuję zrozumieć, dlaczego tak jest, a także, jeśli istnieje jakiś sposób, aby ten fragment był wyświetlany na końcu mojego scrollView.Fragment mapy google wewnątrz 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> 
+1

Wygląda na to, że odpowiedź została już udzielona: http://stackoverflow.com/questions/30525066/how-to-set-google-map-fragment-inside-scroll-view –

+1

Mój problem polega na tym, że fragment mapy nie wyświetla się w scrollView. Używam google maps lite, naprawdę nie wiem, co mapa nie pokazuje wewnątrz scrollView, ale kiedy usunąłem z scrollView wszystko działa dobrze ... –

+1

Czy próbowałeś nestedScrollView? To jest względnie nowy https://developer.android.com/reference/android/support/v4/widget/NestedScrollView.html –

Odpowiedz

1

że rozwiązany przez dodanie zawartości do ScrollView a następnie owinięcie zawartość wewnątrz 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> 
2
<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> 
4

Najpierw trzeba utworzyć klasę zwyczaj ScrollView, jak poniżej.

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; 
     } 
    } 

Następnie użyć klasy CustomScrollView zamiast ScrollView.

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

</CustomScrollView> 

I gotowe! : D

Powiązane problemy