View on top of map disappears while using it with a DrawerLayout
Asked Answered
G

2

1

I'm creating a layout which contains a maps (com.google.android.gms.maps.SupportMapFragment) & a mini layout to enter origin & destination(pickup_dropoff_LL LinearLayout).

XML

<RelativeLayout
    android:id="@+id/main_RL"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/rideType_LL">

        <include
            android:id="@+id/pickup_dropoff_LL"
            layout="@layout/layout_pickup_dropoff"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_marginTop="10dp" />

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MapsActivity" />

</RelativeLayout>

Initially this had a corresponding Activity but I had to introduce a DrawerLayout so I had to convert it to a Fragment.

After doing that my pickup_dropoff_LL disappears. It is shown on the screen for a micro second and then it disappears.

I suspect the issue is somewhere here but I'm not sure.

SupportMapFragment fm;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.activity_main_activity, container, false);

    fm = new SupportMapFragment() {
        @Override
        public void onActivityCreated(Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
            map = fm.getMap();
            if (map != null) {
                map.setMyLocationEnabled(true);
                fm.getMapAsync(MainActivity2.this);


            }
        }
    };
    getChildFragmentManager().beginTransaction().add(R.id.main_RL, fm).commit();

    return rootView;
}

1. I checked visibility for pickup_dropoff_LL. It's showing as 0, which means View.VISIBLE. But it is not visible.

2. As suggested by some links, I tried placing an empty view of same height & width over my map. Even that didn't work.

So how do I stop the view from disappearing?? Please help.

Gurolinick answered 25/11, 2015 at 16:5 Comment(0)
B
0

Try drawing your layout last. Put the Include after the Fragment

<RelativeLayout
    android:id="@+id/main_RL"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/rideType_LL">

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MapsActivity" />

        <include
            android:id="@+id/pickup_dropoff_LL"
            layout="@layout/layout_pickup_dropoff"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_marginTop="10dp" />
</RelativeLayout>
Bane answered 25/11, 2015 at 17:18 Comment(0)
H
0

Have you tried moving your content inside of your drawer and not behind it?

<!-- Drawer Host inside the parent relative layout -->
<android.support.v4.widget.DrawerLayout
    android:id="@+id/main_drawer"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

   <!-- Hold Fragment here -->
    <FrameLayout
        android:id="@+id/frag_main_host"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

     <!-- Drawer -->
     <RelativeLayout
          android:id="@+id/drawer_pane"
          android:layout_width="wrap_content"
          android:layout_height="match_parent"
          android:layout_gravity="start">
          <!-- Menu list for drawer -->
          <ListView
              android:id="@+id/menu_list"
              android:layout_height="match_parent"
              android:layout_width="280dp"
              android:dividerHeight="1sp"
              android:gravity="start"
              android:choiceMode="singleChoice" />
     </RelativeLayout>
 </android.support.v4.widget.DrawerLayout>

Putting anything below your view would make it not appear when opened although it is visible in property. In your class you can swap the fragment as desired by calling the fragment manager and seleting a fragment at whatever list index is selected. I suggest use an internal listener and just call a method to pick the view and swap it. Like below:

Listener (Internal class):

class MainDrawerItemClickListener implements AdapterView.OnItemClickListener{

    @Override
    public void onItemClick(AdapterView<?> adapter, View view, int position, long id ){
            getView(position);
            // close the drawers once selected 
            mDrawerLayout.closeDrawers();
     }
}

That method will call this method in your main class:

     // select the view 
     public void getView( int position ){
          Fragment frag = null;
          switch( position ){
             case 0:
                frag = new MyFragment();
                break;
             case 1:
                frag = new MyOtherFragment();
                break;

              default:
                 break;
           }

          if( frag != null ){

             swapView( frag );
          }

}


// swaps the fragments
public void swapView( Fragment frag ){ 
     FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
     ft.replace( R.id.frag_main_host, frag ).commit();
}

Hope it helps, I know this is an old question, but I am sure someone will have the same question.

Hel answered 10/4, 2016 at 0:24 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.