2012-04-22 13 views
6

me escondo AdView admob por view.gone:¿Cómo ocultar/desactivar la vista previa de 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); 

Esto oculta el anuncio, pero AdView sí es todavía palpable, por lo que si toco el espacio del AdView, todavía se abre el navegador y me redirige al anuncio , aunque el anuncio en sí no es visible.

¿Cómo deshabilitar el evento táctil también? He intentado todas las líneas de arriba, pero ninguna de ellas funcionó.

¿Algún consejo?

Respuesta

4

Trate de usar setOnTouchListener y Override onTouch como desee. También puede utilizar 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); 

y agréguelo cuando lo necesite.

+0

No pensé en quitar y agregar la vista. Gracias. – Tamas

5

Configuración adView.setVisibility(View.GONE) y eliminar la vista de AdMob de la jerarquía de vista ocultará el anuncio y evitará la interacción del usuario en la mayoría de los casos.

No olvide finalizar el ciclo de vida de AdView cuando la actividad que muestra el anuncio finalice (se destruya). Desde el Javadoc AdMob SDK:

public void destroy()

destruye la AdView. AdView ya no se debe usar después de que se llame a este método.

Hacer una llamada al destroy() en onDestroy() de devolución de llamada de la Actividad:

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

adView tiene tipo AdView. Simple View no tiene método de destrucción() – Mark

+0

@Mark 'AdView' tiene su propio método' destroy() 'definido. – Vektor88

+1

@mjama ¿debo llamar también .destroy() si he creado AdView a través de XML? En la guía parece que no necesito llamar a 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); 
    } 

incluso este código no destruye AdMob = ((( tengo es Handler y WebView en la memoria conteniendo la actividad

+0

Una solución alternativa es no confiar en el Versión XML de AdView, pero cree la vista mediante programación y agréguele un contenedor. De esta forma puede usar el contexto de la aplicación. Si usa la versión XML, usará el contexto de la Actividad que será propenso a fugas de memoria. (También descubrí esto recientemente) –

Cuestiones relacionadas