我正在尝试在游戏顶部添加横幅广告。我的活动使用带有自定义 SurfaceView 的relativelayout。我希望广告与 SurfaceView 重叠。
广告会加载并可点击,但不会绘制到屏幕上。当我离开活动并返回时,会绘制广告(例如,通过按主页按钮,然后通过最近使用的菜单返回到应用程序)。
这不是等待广告加载的问题,因为 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 首次运行时,加载广告的代码由 RenderThread 作为 Runnable 发布到 UI 线程。
有人知道如何让广告立即展示吗?或者为什么只有当我返回活动时才会绘制广告?
我尝试在RelativeLayout 上调用forceLayout() / requestLayout() 但这没有帮助。我还尝试在视图上调用 invalidate() 。
谢谢,
汤姆.
EDIT
我向 AdView 添加了一个 AdListener,并且可以确认 onAdLoaded 正在被调用。广告已加载但不可见。
什么有效:我在 onAdLoaded 回调中发出另一个 adLoad 请求,然后广告就会显示出来。
因此,广告仅在我提出第二个请求后才会显示。有人知道这是怎么回事吗?