画面幅が狭くてadmobの広告が表示できないときの対処法



admobは画面幅が最低でも320dp以上ないと、広告を表示してくれません。
QVGAやHVGAでも画面幅は320dp以上あるのに、広告が表示されないということは、ActivityのテーマをDialogにしている場合が多いのではないでしょうか。

解決方法

  • 広告を表示するのをやめる
  • Activityのテーマを変える
  • Dialogテーマをカスタマイズする
1.広告を表示しなければ、何も悩む必要はないですね!
2.ActivityのテーマをDialogにしなければ、admobも問題なく表示されることだと思います。
3.どうしてもActivityをDialogで表示したい場合は、Dialogのテーマをカスタマイズするしか有りません。
カスタマイズする方法としては、Dialogテーマの背景画像を差し替えるだけでOKです。

画像を差し替える理由

Theme.Dialogには、次のような余白を含む画像リソースが使われています。

上記の余白のせいで、広告を表示する320dpを確保できなかったわけです。
ですので、余白のない画像リソースを使えば表示幅も320dpを確保できるわけです。


カスタマイズしてみる

具体的には、styles.xmlにTheme.Dialogを継承したstyleを定義します。
次のようにします

<?xml version="1.0" encoding="utf-8"?>
<resources>
    
    <style name="FillDialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowBackground">@drawable/my_dialog</item> 
    </style>
</resources>

上記スタイルをAndroid.manifest内のActivityに適用します。

画像リソースを用意する上での注意点

伸縮可能な'9patch'画像を用意することをお勧めします。
9patchとはpng画像の上下左右に1ピクセルの線を引くことで、
伸縮可能な領域を予め決めておく事が出来ます。