8

So I been trying to use google maps lite fragment inside a scrollView and I haven't be able to show the map. After removing the the scrollView and leaving the fragment by it self, now is when you can see the map. I am just trying to understand why is that and also if there is any way possible to have this fragment to show at the end of my 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> 
Irshu
  • 8,248
  • 8
  • 53
  • 65
Jose CC
  • 865
  • 11
  • 24
  • 1
    This seems to have already been answered: http://stackoverflow.com/questions/30525066/how-to-set-google-map-fragment-inside-scroll-view – Quinn Turner Aug 26 '16 at 03:05
  • 1
    my problem is that the map fragment is not showing inside the scrollView. I am using google maps lite, I really don't know what is the map not showing inside the scrollView, but when I removed from the scrollView everything works good... – Jose CC Aug 26 '16 at 04:12
  • 1
    Have you tried nestedScrollView? That's relative new https://developer.android.com/reference/android/support/v4/widget/NestedScrollView.html – Pedro Varela Aug 31 '16 at 14:44

3 Answers3

5

First you need to create a custom ScrollView class, like the following.

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

Then use the CustomScrollView class instead of ScrollView.

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

</CustomScrollView>

And you are done! :D

Shiba Prasad J.
  • 387
  • 2
  • 7
4
<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>
Jamil Hasnine Tamim
  • 4,389
  • 27
  • 43
2

I solved it by adding the content into ScrollView and then wrapping the content inside of 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>
Artiom
  • 7,694
  • 3
  • 38
  • 45
Jose CC
  • 865
  • 11
  • 24