El anuncio de Admob no cambia de tamaño correctamente en la orientación de la pantalla

Estoy utilizando Admob para anuncios en mi aplicación y me encontré con un problema. Cada vez que giro la pantalla al modo horizontal, aparece el anuncio pero es del mismo tamaño que en el modo vertical. Este problema se produjo después de haber agregado esta declaración xml en mi manifiesto a mi actividad principal que era necesario para mantener las partes principales de la aplicación funcionando sin problemas:

android:configChanges="orientation|keyboardHidden|screenSize" 

Estoy usando banner inteligente en mi anuncio para el tamaño:

 ads:adSize="SMART_BANNER" 

He adjuntado imágenes de este problema:

Esto es lo que parece en el modo de retrato. Funciona perfectamenteEsto es lo que parece después de dar vuelta a mi teléfono de lado. El anuncio sigue apareciendo pero no se redimensiona en el ancho de relleno

¿Qué debo hacer para que el anuncio cambie de tamaño correctamente en modo horizontal sin eliminar

 android:configChanges="orientation|keyboardHidden|screenSize" 

En el manifiesto de mi actividad principal?

Así es como lo solucioné:

 @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); orientation_changed = true; renewAd(); } private void renewAd() { AdView ad = (AdView) findViewById(R.id.adView); LayoutParams lp = (LayoutParams) ad.getLayoutParams(); // change relative layout for your layout which contains the adView RelativeLayout parent = (RelativeLayout) ad.getParent(); parent.removeView(ad); AdView newAd = new AdView(this, AdSize.SMART_BANNER, "YOUR ID"); newAd.setId(R.id.adView); newAd.setLayoutParams(lp); parent.addView(newAd); newAd.loadAd(new AdRequest()); } 

Saludos

En línea con otras respuestas (pero actualizándolas al SDK de AdMob actual -v7.5- y proporcionando el código completo), el método onConfigurationChanged () de la actividad debe incluir la destrucción y creación de la vista de anuncio:

 // Remove the ad keeping the attributes AdView ad = (AdView) myactivity.findViewById(R.id.adView); LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) ad.getLayoutParams(); LinearLayout parentLayout = (LinearLayout) ad.getParent(); parentLayout.removeView(ad); // Re-initialise the ad mAdView.destroy(); mAdView = new AdView(parent); mAdView.setAdSize(com.google.android.gms.ads.AdSize.SMART_BANNER); mAdView.setAdUnitId(myactivity.getString(R.string.banner_ad_unit_id)); mAdView.setId(R.id.adView); mAdView.setLayoutParams(lp); parentLayout.addView(mAdView); // Re-fetch add and check successful load AdRequest adRequest = new AdRequest.Builder() .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) .addTestDevice(parent.getString(R.string.test_device_id)) .build(); 
  • Finalizar la actividad desde la vista personalizada utilizando el contexto
  • Cómo proteger la clave pública de Google Play al realizar la facturación de InApp
  • Cómo hacer que listFooter no se puede hacer clic
  • Android - ¿Cómo es posible que un servicio siga funcionando después de que la Actividad haya sido cerrada?
  • Cómo eliminar un módulo importado en Android Studio
  • Java.lang.OutOfMemoryError Una aplicación de cámara
  • Android: valor predeterminado en editText
  • Deserializar el mapa JSON usando Jackson no da el mapa correcto
  • ¿Cómo implementar una arquitectura REST y ContentProvider sencilla usando Modelos?
  • SSLHandshakeException Ancla de confianza para ruta de certificación no encontrada Android HTTPS
  • Acceder a la clase externa desde el enum interno anidado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.