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:
- Desempeño de Android: "Evita los internos y los setters"
- Cómo limitar la búsqueda de ubicación cercana según la ubicación actual mediante google maps en android?
- Android Studio 2.1 No se puede resolver el símbolo 'R'
- Cómo hacer línea horizontal en Android mediante programación
- Android: Hacer el botón holo predeterminado opaco
ads:adSize="SMART_BANNER"
He adjuntado imágenes de este problema:
¿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?
- Cómo comparar una cadena de Intent.getStringExtra ()?
- JSON a clase Java
- Cómo deshabilitar SSLv3 en android para HttpsUrlConnection?
- La fusión de clips mp4 con mp4parser hace que el audio detrás del video
- webView.loadUrl no funciona
- Cómo arreglar este código todas las pantallas de Android
- No se puede construir el proyecto de biblioteca Bintray Gradle - ClassNotFoundException
- ¿Cómo eliminar un elemento seleccionado de una vista de lista?
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();