電話がオフラインの場合でも広告の存在を制御できるようにするために、admob 広告を LinearLayout に配置しました。これはフレーム レイアウトであるため、広告はゲームの上部に表示されます。HTC Desire(2.2) では、広告は画面上部に正しく表示されますが、Samsung Galaxy SII(2.3.1) では広告はゲームの下に表示されます - 表示されませんが、領域を押すと広告アクションがトリガーされます.
レイアウト ファイル:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:id="@+id/game"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/ads"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@color/black"
android:orientation="vertical" >
</LinearLayout>
</FrameLayout>
広告を読み込むコード:
private void loadAds() {
LinearLayout layout = (LinearLayout) findViewById(R.id.ads);
final AdView adView = new AdView(this, AdSize.BANNER, ADMOB_ID);
layout.addView(adView);
final AdRequest request = new AdRequest();
adView.loadAd(request);
}
編集:bringToFront()を追加しても役に立ちませんでした。SII では、広告が完全に非表示になるわけではなく、上部に約 3 ~ 5 ピクセルが表示されます。
編集 2: 問題は onCreate で広告レイアウトを非表示にしたことが原因であることが判明しました。解決策は、onCreate が実行された後にハンドラーを介して非表示にすることでした。