Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android change google map padding at runtime

I want to move Google map layout items at runtime, but I'm not able to do it and I don't know if it's possible or not. What I want to do is: I have a Google map fragment which takes up all the screen. I also have an Ad. When app starts, I show the map. Like this:

enter image description here

And when the ad loads, I show the ad at the bottom, but I need to move the Google logo above the ad. Like this:

enter image description here

I've tried with:

if (banner is loaded)
googleMap.setPadding(0, 0, 0, banner.getLayoutParams().height);

But I had no success. What am I doing wrong?

EDIT: Thanks to @SimplePlan, I changed the RelativeLayout where was included the mapfragment to a FrameLayout:

<FrameLayout >
    <fragment
        android:id="@+id/map"
        class="com.google.android.gms.maps.SupportMapFragment" />

    <com.inmobi.monetization.IMBanner
        android:layout_gravity="bottom" />
</FrameLayout>

And I added a listener to the Ad:

banner.setIMBannerListener(new IMBannerListener() {
    @Override
    public void onBannerRequestSucceeded(IMBanner arg0) {
        googleMap.setPadding(0, 0, 0, banner.getLayoutParams().height);
    }
});
like image 809
David Avatar asked Mar 08 '14 09:03

David


1 Answers

As long as the layout process is not finished, the view's dimension is set to 0. Using Handler, you can set the map's padding after the layout is done.

    new Handler().post(new Runnable() {
        @Override
        public void run() {
            mapHelper.map.setPadding(0,0,0,ad.getHeight());
        }
    });
like image 182
sulai Avatar answered Oct 31 '22 01:10

sulai