[Android] Abmob Banner 広告表示、非表示の切り替え

AdMobの広告表示を非表示にダイナミックに切り替えたいケースについて
 
画面の上部や底辺に張り付けてあるケースは比較的簡単ですが、広告の位置が他のUI部品の間に挿入されていて、非表示でのレイアウトも不自然にならないようにしないといけない場合です。
 
下は広告が画像に挟まれたレイアウトで、ボタンを押すスト広告が非表示になり、空いた隙間を埋めるかあるいは空けたままにする例です。
 

admobaddremove_1
admobaddremove_2

Android Studio 2.1.3
Android 7.0

 

sponsored link

AdMob Banner の設定

 
基本的なBanner広告設定ができている状態から始めます
尚、基本設定は こちら です

  1. 広告を表示したい箇所にLineaLayoutなどで定義
    • id を admob_layout
    • LinearLayout admobLayout = (LinearLayout) findViewById(R.id.admob_layout);
  2. addView でAdMobのViewを admobLayout  に貼る
    • admobLayout.addView(adMobView);
    • これで指定した箇所に広告を貼る事ができます
  3. removeView()を使って広告をLinearLayoutから削除して非表示にします
    • adMobView.setVisibility(AdView.GONE);
    • admobLayout.removeView(adMobView);
  4. 再度表示する場合は、また adView() を行う
    • admobLayout.addView(adMobView);
    • admobLayout.setVisibility(LinearLayout.VISIBLE);
    • adMobView.setVisibility(AdView.VISIBLE);

まとめると
MainActivity.java

 
activity_main.xml

 
抜けた広告の隙間をそのままにしたい場合は
最初から LinerLayout の height を 50dp のように指定することもできます。
 

 

admobaddremove_1
admobaddremove_3

関連ページ:

  1. AdMob 広告を Android Studio で設定
  2. AdMob 表示、非表示の切り替え
  3. インタースティシャルの設置
  4. Interstitial 広告をクラスにまとめる