Android在运行时更改谷歌地图填充

Dav*_*vid 12 android google-maps padding inmobi

我想在运行时移动谷歌地图布局项目,但我无法做到这一点,我不知道它是否可能.我想要做的是:我有一个谷歌地图片段占据了所有的屏幕.我也有广告.当应用程序启动时,我会显示地图.像这样:

在此输入图像描述

加载广告后,我会在底部展示广告,但我需要在广告上方移动Google徽标.像这样:

在此输入图像描述

我尝试过:

if (banner is loaded)
googleMap.setPadding(0, 0, 0, banner.getLayoutParams().height);
Run Code Online (Sandbox Code Playgroud)

但我没有成功.我究竟做错了什么?

编辑:感谢@SimplePlan,我更改了RelativeLayout,其中包括mapfragment到FrameLayout:

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

    <com.inmobi.monetization.IMBanner
        android:layout_gravity="bottom" />
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

我在广告中添加了一位听众:

banner.setIMBannerListener(new IMBannerListener() {
    @Override
    public void onBannerRequestSucceeded(IMBanner arg0) {
        googleMap.setPadding(0, 0, 0, banner.getLayoutParams().height);
    }
});
Run Code Online (Sandbox Code Playgroud)

sul*_*lai 16

只要布局过程没有完成,视图的尺寸就会设置为0.使用时Handler,可以在布局完成后设置贴图的填充.

    new Handler().post(new Runnable() {
        @Override
        public void run() {
            mapHelper.map.setPadding(0,0,0,ad.getHeight());
        }
    });
Run Code Online (Sandbox Code Playgroud)

  • 只是为了澄清填充参数是`setPadding(left,top,right,bottom)`.我只添加这个,因为当我查看实际的方法时,它将参数名称列为`i`,`i1`,`i2`,`i3`这是超级无益的. (9认同)