アプリにAdMobを搭載したSMARTBANNERを配置することにしました。ドキュメントから述べられているように: Androidのスマートバナーサイズ 、ポートレート、私は50dpの高さを予約しました。だから私はそれのために空の線形レイアウトを予約しました、それは過去のアプリで私のために働きました:
<LinearLayout
android:id="@+id/layoutAd"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:orientation="vertical" />
そして、次の方法を使用しました。
private void createAdView() {
if (C.AD_ON) {
ad_view = new AdView(this, AdSize.SMART_BANNER, C.AD_APPLICATION_ID);
LinearLayout l = (LinearLayout) findViewById (R.id.layoutAd);
l.addView (ad_view);
AdRequest a = new AdRequest();
ad_view.loadAd(a);
}
}
さて、一般的にこの単純な方法は機能しますが、この場合、エラーが発生します。
Not enough space to show ad! Wants: <480, 90>, Has: <480, 50>
??? 480x90?480x50?前の表でこれらのサイズのいずれも見つかりません...それらはどこから来たのですか?とにかく、広告は表示されません。
次に、50dpではなく90dpを予約しようとしましたが、広告は正しく表示され、空のスペースが残ります...何を推測しますか...約40dp。
この時点で、私には疑問が生じました。以前は、以前のアプリでは、すべてが電話で機能していました。私はすべてが異なる画面サイズと密度に適応していると思いました。今では、広告が50dpではなく90dpやその他の数値を期待していたために、実際に多くの広告が表示されなかったのではないかと心配しています。
実は私がSMARTBANNERを置くことにした唯一の理由は、私がこの種の問題から解放されたと思ったからです!
さて...すべての可能な画面でこれを正しく機能させ、特定の密度または特定のサイズで失敗しないことを合理的に確認するには、どうすればよいですか?実行しているデバイスを自分で検出してから、プログラムで50、90、または55 dpを予約する必要がありますか?これは私にはばかげているように聞こえます!
バナーに適用できる「WRAP_CONTENT」のような関数はないので、手動で90または50ピクセルを指定する必要はありませんが、正しいバナーが表示され、それに合わせてレイアウトが調整されることを期待しますか?
ありがとうございました。