2012-04-22 8 views
6

Ho nascondere AdMob ADView da view.gone:Come nascondere/disattivare l'adv di admob?

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

Questo nasconde la pubblicità, ma l'ADView stessa è ancora tangibile, quindi se mi tocco lo spazio del ADView, si apre ancora il browser e mi reindirizza all'annuncio , sebbene l'annuncio stesso non sia visibile.

Come disabilitare anche l'evento di tocco? Ho provato tutte le righe sopra ma nessuna ha funzionato.

Qualche consiglio?

risposta

4

Prova a utilizzare setOnTouchListener e Sostituisci onTouch come desideri. Inoltre è possibile utilizzare 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); 

e aggiungerlo quando necessario.

+0

Non pensare di rimuovere e aggiungere la vista Grazie – Tamas

5

L'impostazione adView.setVisibility(View.GONE) e la rimozione della vista AdMob dalla gerarchia della vista nascondono l'annuncio e impediscono l'interazione dell'utente nella maggior parte dei casi.

Non dimenticare di terminare il ciclo di vita AdView quando l'attività di visualizzazione dell'annuncio è terminata (distrutta). Dal Javadoc AdMob SDK:

public void destroy()

distrugge l'AdView. L'AdView non dovrebbe più essere usato dopo che questo metodo è stato chiamato.

Effettuare una chiamata al destroy() nel onDestroy() callback del Activity:

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

adView ha tipo AdView. Simple View non ha alcun metodo destroy() – Mark

+0

@Mark 'AdView' ha il suo metodo definito' destroy() '. – Vektor88

+1

@mjama dovrei chiamare anche .destroy() se ho creato l'AdView tramite XML? Nella guida sembra che non sia necessario chiamare destroy: https://developers.google.com/mobile-ads-sdk/docs/admob/fundamentals?hl=it#play – Accollativo

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

anche questo codice non distrugge AdMob = ((( ho è Handler e WebView in memoria trattenendo il attività

+0

Una soluzione alternativa è di non fare affidamento sul Versione XML di AdView, ma crea la vista a livello di codice e aggiungila a un contenitore. In questo modo puoi usare il contesto dell'applicazione. Se si utilizza la versione XML, verrà utilizzato il contesto Attività che sarà soggetto a perdite di memoria. (L'ho scoperto anche recentemente) –