我正在使用Google AdMob Ads SDK 4.0.4 for Android
默认情况下,在加载广告之前,AdView没有尺寸。如果广告上方或下方有按钮,则可能会出现问题。
如果广告在他们即将点击按钮的确切时刻返回,用户可能会意外点击该广告。
在旧的admob SDK中,我使用setGoneWithoutAd(false)解决了这个问题。这样,即使广告尚未退回,也会保留空间。
在新的SDK(Google Admob Ads SDK 4.0.4)中,我设法做到了这一点 使用此快速修复:通过将广告放在某个布局中来保留空间 width =“320dp”,height =“50dp”
<LinearLayout
android:layout_width="320dp"
android:layout_height="50dp" >
<com.google.ads.AdView android:id="@+id/adview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adUnitId="xxxxxxxxxxx"
ads:adSize="BANNER"/>
</LinearLayout>
它有效,但我不确定这是否是一个正确的方法。(我会遇到着名的“没有足够的空间来展示广告!”问题吗?)
总结一个问题:即使在请求广告时,如何(正确)使AdView“占用”空间?
提前谢谢!
答案 0 :(得分:5)
你试过了吗?
<com.google.ads.AdView android:id="@+id/adview"
android:layout_width="320dip"
android:layout_height="50dip"
ads:adUnitId="xxxxxxxxxxx"
ads:adSize="BANNER"/>
我使用AdWhirl为我提供广告,我拥有的方式是固定视图,具有固定尺寸。看起来你已将它设置为包装内容,使视图在没有任何内容时消失。试一试,让我知道它是如何运作的。
答案 1 :(得分:3)
首先,您必须确定所需的广告尺寸。有几个预定义的。
最容易使用的是 SMART_BANNER ,它会调整它的宽度以匹配当前的屏幕宽度, 对于屏幕高度<= 400,(>&gt;&amp;&lt; = 720)或> 720 dp,它的高度分别为32,50或90 dp。
一旦您知道要请求的横幅类型,就可以在 adSize 属性上声明它,并使用 layout_width 为此保留空间em> 和 layout_height 属性。
例如,对于SMART_BANNER,您可以执行以下操作:
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="@dimen/ad_banner_height"
ads:adSize="SMART_BANNER"
ads:adUnitId="xxxxxxxxx"/>
您可以将ad_banner_height设置为以下值:
values/dimens/ad_banner_height --> 32dp
values-h400dp/dimens/ad_banner_height --> 50dp
values-h720dp/dimens/ad_banner_height --> 90dp
对于其他横幅尺寸,请检查:https://developers.google.com/admob/android/banner#banner_sizes
答案 2 :(得分:0)
在我的横幅设计中:
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:visibility="gone"
app:adSize="BANNER"
app:adUnitId="ca-app-pub-3940256099942544/6300978111"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
</com.google.android.gms.ads.AdView>
如果不是高级模式,则调用此方法
private void showBanner(){
MobileAds.initialize(this, new OnInitializationCompleteListener() {
@Override
public void onInitializationComplete(InitializationStatus initializationStatus) {
}
});
mAdView = findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
mAdView.setVisibility(View.VISIBLE);
mAdView.setAdListener(new AdListener(){
@Override
public void onAdLoaded() {
super.onAdLoaded();
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
mAdView.setLayoutParams(layoutParams);
mAdView.setVisibility(View.VISIBLE);
}
@Override
public void onAdFailedToLoad(LoadAdError loadAdError) {
super.onAdFailedToLoad(loadAdError);
mAdView.setVisibility(View.GONE);
}
});
}
首先,我展示了在设计中分配了60dp的横幅广告,我添加了一个侦听器,以便在横幅广告无法加载时隐藏该空间,但是如果横幅广告已加载,则会在高度和宽度上分配WRAP_CONTENT并显示
>