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

标签 android google-maps padding inmobi

我想在运行时移动 Google map 布局项目,但我做不到,而且我不知道这是否可能。 我想要做的是:我有一个占据所有屏幕的谷歌地图 fragment 。我也有一个广告。当应用程序启动时,我会显示 map 。像这样:

enter image description here

当广告加载时,我将广告显示在底部,但我需要将 Google Logo 移到广告上方。像这样:

enter image description here

我试过:

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

但是我没有成功。我做错了什么?

编辑:感谢@SimplePlan,我将包含 mapfragment 的 RelativeLayout 更改为 FrameLayout:

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

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

然后我为广告添加了一个监听器:

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

最佳答案

只要布局过程没有完成, View 的维度就会设置为 0。使用 Handler,您可以在布局完成后设置 map 的内边距。

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

关于Android 在运行时更改谷歌地图填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22267814/

相关文章:

android - 如何使用 popUpToSaveState 和 restoreState 在导航组件 Android Kotlin 中保存和保持状态?

Android 无法在设备上安装 HelloWorld.apk (null) 错误

javascript - 使用 json 从数据库检索纬度经度到 php 页面

android - 如何将 map 放置在选项卡式 Android 应用程序的选项卡中

html - CSS 在不使用负值的情况下将某些内容置于顶部

html - 删除元素的边距 "li"

html - 为什么顶部的边距不会改变?

android - Android mergeDebugResource IndexOutOfBoundsException -1

android - 如何通过对象动画器为可绘制对象设置动画

javascript - 谷歌地图信息框显示上次点击的位置