我正在尝试将横幅广告添加到我的游戏顶部。我的 Activity 使用带有自定义 SurfaceView 的 RelativeLayout。我希望广告与 SurfaceView 重叠。
广告加载并可点击,但未绘制到屏幕上。当我离开 Activity 并返回时,会绘制广告(例如,按下主页按钮,然后通过最近菜单返回到应用)。
这不是等待广告加载的问题,因为 1) 如果我等待,广告不会显示,以及 2) 广告即使不可见也可以点击。
这是我的布局代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/layout_mainmenu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.xxx.menu.SurfaceViewMainMenu
android:id="@+id/view_mainmenu"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<com.google.android.gms.ads.AdView
android:id="@+id/ad"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignTop="@id/view_mainmenu"
android:layout_alignLeft="@id/view_mainmenu"
ads:adSize="BANNER"
ads:adUnitId="@string/ad_unit_id_banner"/>
当 RenderThread 首次运行时,加载广告的代码作为 Runnable 由 RenderThread 发布到 UI 线程。
有没有人知道如何让广告立即展示?或者为什么只有在我返回 Activity 时才会绘制广告?
我试过在 RelativeLayout 上调用 forceLayout()/requestLayout() 但这没有帮助。我还尝试在 View 上调用 invalidate()。
谢谢, 汤姆。
编辑
我向 AdView 添加了一个 AdListener,可以确认正在调用 onAdLoaded。广告已加载但不可见。
有效方法:我在 onAdLoaded 回调中发出另一个 adLoad 请求,然后广告出现了。
所以广告只会在我发出第二个请求后显示。有人知道这里发生了什么吗?
最佳答案
我遇到了同样的问题,我所要做的就是在加载时将 adView 置于最前面。 (我推荐这个超过加载它两次)
mAdView.setAdListener(new AdListener()
{
public void onAdLoaded()
{
Log.i("Ads", "onAdLoaded");
mAdView.bringToFront();
}
}
关于安卓 AdMob : addView doesn't show ad until return to activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21935153/