2012-04-22 140 views
6

我通過view.gone隱藏的AdMob廣告查看:如何隱藏/禁用admob adview?

//adView.setClickable(false); 
//adView.clearFocus(); 
//adView.setEnabled(false); 
//adView.setFilterTouchesWhenObscured(true); 
//adView.setFocusable(false); 
//adView.setFocusableInTouchMode(false); 
adView.setVisibility(View.GONE); 
adView.startAnimation(animation); 

這隱藏了廣告,但廣告查看本身仍然是可觸摸的,所以如果我觸摸AD瀏覽的空間,但它仍然會打開瀏覽器並重定向我的廣告,儘管廣告本身不可見。

如何禁用觸摸事件呢?我已經嘗試了上面的所有行,但都沒有工作。

有什麼建議嗎?

回答

4

嘗試使用setOnTouchListener並按照需要覆蓋onTouch。您也可以使用removeView():

LinearLayout linLay = (LinearLayout)findViewById(R.id.ad_layout); 
linLay.removeView(adView); 
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT); 
linLay.addView(adView, params); 

並在需要時將其添加回去。

+0

沒有想到刪除並添加視圖。謝謝。 – Tamas 2012-04-22 22:46:14

5

設置adView.setVisibility(View.GONE)並從視圖層次結構中刪除AdMob視圖會在大多數情況下隱藏廣告並阻止用戶交互。

當顯示廣告的活動完成(銷燬)時,不要忘記結束AdView生命週期。從AdMob廣告SDK的Javadoc:

公共無效的destroy()

銷燬AdView的。在調用此方法後,不應再使用AdView。

撥打電話到destroy()在活動的onDestroy()回調:

@Override 
public void onDestroy() { 
    if (adView != null) { 
     adView.destroy(); 
    } 
super.onDestroy(); 
} 
+0

adView有類型的AdView。簡單視圖沒有destroy()方法。 – Mark 2013-09-23 18:31:44

+0

@Mark'AdView'具有自己定義的'destroy()'方法。 – Vektor88 2014-02-25 10:10:12

+1

@mjama如果我通過XML創建了AdView,我是否也應該調用.destroy()?在指南中,似乎我不需要撥打摧毀:https://developers.google.com/mobile-ads-sdk/docs/admob/fundamentals?hl=it#play – Accollativo 2014-06-24 15:28:12

0
final com.google.ads.AdView ad = (AdView) findViewById(R.id.rect_ad); 
    if (ad != null) { 
      ad.stopLoading(); 
      ad.destroy(); 
      getWindowManager().removeView(ad); 
    } 

即使這個代碼不破壞的AdMob =((( 我有它的處理程序和WebView中記憶抱着我活動

+0

解決方法是不依賴於XML版本的AdView,但以編程方式創建視圖並將其添加到容器中。這樣你可以使用應用程序上下文。 如果您使用XML版本,它將使用容易產生內存泄漏的活動上下文。 (我最近也發現了這個) – 2017-01-11 09:03:32